combobox实现无论是用代码还是手动更改选中项都即时显示当前selindex功能
By
admin
at 2022-11-11 • 1人收藏 • 783人看过
有个需求需要将combobox无论是手动点选更改选择项还是用代码设置selindex来选中, 都要在edit编辑内实时显示出来, 这样便于用户看到当前是选中的第几个项目
我们知道用代码 combobox.selIndex = 3 这样来修改选中项是不会触发onSelchange()函数的, 那么只能拦截消息变相的实现

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=423;bottom=325)
winform.add(
button={cls="button";text="随机改变selindex";left=85;top=183;right=316;bottom=252;z=2};
combobox={cls="combobox";left=67;top=81;right=290;bottom=107;edge=1;font=LOGFONT(h=-21);items={"1";"2";"3";"4";"5";"6";"7"};mode="dropdownlist";z=1};
edit={cls="edit";text="0";left=295;top=82;right=367;bottom=119;align="center";edge=1;font=LOGFONT(h=-21);multiline=1;z=3}
)
/*}}*/
winform.button.oncommand = function(id,event){
//代码随机更改
winform.combobox.selIndex = math.random(1,7);
}
winform.combobox.wndproc = function(hwnd,message,wParam,lParam){
//手动点选产生的消息
if(message == 273){
winform.edit.text = winform.combobox.selIndex;
}
//用代码更改selIndex产生的消息
//消息分两步
//1.更改指令
if(message == 334){
//防多次触发
winform.combobox.tag = true;
}
//2.已就绪执行
if(message == 15 and winform.combobox.tag){
//防多次触发
winform.combobox.tag = null;
winform.edit.text = winform.combobox.selIndex;
}
}
winform.show();
win.loopMessage();登录后方可回帖