我们知道,在进行一个刷新操作的时候,比如:TListbox,Tcombox,tListview,ttreeview等.操作item时候,可能会触发其相关的change,select等等事件.显然,这个时候不希望触发,一般是手工关闭这些事件,刷新完毕再打开.如果控件的时间多,手工操作就比较麻烦,有没有一个方法临时关闭,再临时打开.
思想有点类似数据控件的Disablecontrols,EnableControls那样.
请达人赐教.
思想有点类似数据控件的Disablecontrols,EnableControls那样.
请达人赐教.
VCL貌似没有这个机制
1、設一個全局變量 bFilter,要進行過濾時,則assign為true,否則為false;
2、設定一個句柄變量xHandle,要進行過濾時,把要過濾的相關控件的句柄給xHandle;
3、在onmessage做判斷,如果為bFilter,則進入判斷消息中的HWND是否為xHandle,若是,則將參數handled設為true,即可
而且部分消息是Sende过去的,没有post,无法拦截的。
该怎么办呢?
在需要事件响应的时候把你自定义的过程赋给事件就可以了Procedure TForm1.AA(Sender : TObject);
Begin
ShowMessage('a');
End;procedure TForm1.FormShow(Sender: TObject);
begin
Button1.OnClick := AA;
end;