AlphaControls 控件 窗口初始化出现块状色斑的改进
使用AlphaControls控件,在窗口的显示过程中,有时出现下列情况:
同时,TsComboxcom 控件,显示Form显示时,学出现下列情况:
起初只认为是 AlphaControls 控件 TsComboxcom的个例,是它的Bug。
经分析,这是皮肤在显示的过程中,双出现Change事件,出现动画,而画屏的原因。
例如地OnShow事件中,对TsComboxcom的值,出现变化,执行OnChange事件,所导致。改进如下:
在OnShow事件中对TCombobox控件,实行三个阶段操作:
1、解除OnChange事件(事件初始)
Combobox1.OnChange:=nil;
Combobox2.OnChange:=nil;
Combobox3.OnChange:=nil;
2、对Combobox的Items及Text赋值(事件中段)
(1)Items
ComboBox2.Items.Text:=Mylist.Text;
ComboBox7.Items.Text:=Mylist.Text;
ComboBox9.Items.Text:=Mylist.Text;
(2)Text
if MyList.Count>0 then ComboBox1.Text:=Mylist.Strings[0];
ComboBox2.Text:='日班';
3、加载OnChange事件(事件尾端)
Combobox1.OnChange:=ComboBox1Change;
Combobox2.OnChange:=ComboBox2Change;
Combobox3.OnChange:=ComboBox3Change;
经过上述处理,正常显示:
出错的原因,OnShow事件中,由于Combobox值的变化引起Onshange事件,Combobox显示区域,出现换肤动画情况,引起显示异常。不认它执行OnChange事件,显示正常。