上位机开发笔记
» 搜索 » user:巴克队长 post:true
改造listview使其实现表格内编辑框editbox和下拉列表框combobox功能
不知道你有没有注意,利用原生拓展的listview有时候,数据量比较大的时候,或者光标焦点还在的时候,会出现丢失和闪烁的情况。我之前写过一版,功能比这个可能要稍微多一些,但是使用过程中不理想,代码如下,抛砖引玉,希望大家能搞出更好的
//listviewExx拓展 /*这个库主要是通过父窗体创建唯一控件,然后修改控件的父窗体为listview实现 原因是lisveiw.addCtrl创建的combobox无法正确利用tracker处理消息(因为combobox是符合控件,由editbox和listbox组成的,请教关于多个thread.work实例,后者会抑制前者问题
回复#2 @admin :
并不是这样的!
其实问题也不是按钮的问题,这个问题的根本原因是,多个在主线程上的耗时操作是相互影响的,只要你在主线程上存在耗时操作,都不行。
想了一圈,最好的方法是
1、将循环操作,改成定时器 分步操作
2、另开线程专门用于任务分配
禁忌:在主线程开多个循环任务,尤其是死循环
请教关于多个thread.work实例,后者会抑制前者问题
经过 光庆 的指点,明白了这个不是多线程的问题,是两个按钮的问题
当两个按钮都执行耗时操作时,假如按钮1没有执行完的时候,按下了按钮2,那么按钮1将会暂停,直到按钮2的耗时操作执行完了,才返回按钮1继续执行。测试代码如下:
import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469) winform.add( button={cls="button";text="Button";lef请教关于多个thread.work实例,后者会抑制前者问题
当存在两个以上thread.word实例时,后运行的实例会抑制前面的。详细描述如下:
1、先运行work1任务,work1正常运行
2、再运行work2任务,work1会处于暂停状态
3、work2运行完成后,work1会恢复运行
测试代码如下:
import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=759;bottom=469) winform.add( button={
1