combobox实现无论是用代码还是手动更改选中项都即时显示当前selindex功能

By admin at 23 天前 • 1人收藏 • 179人看过

有个需求需要将combobox无论是手动点选更改选择项还是用代码设置selindex来选中, 都要在edit编辑内实时显示出来, 这样便于用户看到当前是选中的第几个项目

我们知道用代码 combobox.selIndex = 3 这样来修改选中项是不会触发onSelchange()函数的, 那么只能拦截消息变相的实现

screenshots.gif

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();


登录后方可回帖

登 录
信息栏
公 告:

专注分享

谢绝纯提问

谢谢合作!
本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...