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

By admin at 2022-11-11 • 1人收藏 • 679人看过

有个需求需要将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();


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...