例如我想屏蔽修改控件Enabled属性的那个消息(WM_ENABLE),应该怎么弄呢?例如我想给TEdit指定一个新的窗口过程,通过在新的窗口过程中检测是否是这个消息然后屏蔽,但是如何给Edit指定一个新的窗口过程呢?
解决方案 »
- 全局热键的问题。
- 菜鸟做了一个delphi+ado+access程序,但客户总往表里存图片,导致这个ACCESS文件超过2个G了,导致delphi程序不能再往里插入数据了。
- 帮忙分析一下function之Result
- delphi中如何把集合类型数据存入数据库
- 看看这样写有什么不对吗?总是报错?让窗体上的tmenuitem.enabled变成false
- property User[index: integer]: tuserinfo read GetUser write SetUser;default;为什么不能赋值?
- WinXP中如何获取主板Bios的序列号?
- 面临毕业设计,各位大哥,谁有关于美容美发的的文档给与参考~
- DELPHI程序员性别调查!
- 如何热键得到窗口的句柄!
- 高手速度来,zip解压数据流问题
- 不能连通Sql server 急!!!!
//1.Override一下Form的WndProc
//2.对WndProc中的消息进行过滤
function WndProc(............);
begin
case msg of
WM_XXX:新处理过程; end;
Inherited;
end;
Label1.WindowProc:= MyWindowProc;2) 利用子类化。(仅仅可处理从TWinControl继承下来的控件)
SetWindowLong(Edit1.Handle, GWL_WNDPROC, @MyWindowProc);3) 特定消息可以使用SetMethodProp/GetMethodProp来替换。(所有控件,特殊消息)
....在MyWindowProc中处理。想了解其他的,参照我总结过的delphi消息截获:
http://etomahawk.popo.blog.163.com/blog/static/919644820071012111931592/
TmyEdit=class(TEdit)
protected
procedure wndProc(var msg:TMessage);override;
end;
procedure TmyEdit.wndProc(var msg: TMessage);
begin
if msg.Msg=WM_ENABLE then exit;
inherited;
end;