combobox实现无论是用代码还是手动更改选中项都即时显示当前selindex功能
By
admin
at 2022-11-11 • 1人收藏 • 679人看过
有个需求需要将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();
登录后方可回帖