VCL的自定义消息

procedure CMWantSpecialKey(var Msg: TCMWantSpecialKey); message CM_WANTSPECIALKEY;
{说明:
CM_WANTSPECIALKEY - TCMWantSpecialKey - (CM_BASE + 30)
sent by TControl in response to CN_KEYDOWN and CN_KEYUP

拦截特殊键如:VK_TAB、VK_LEFT、VK_RIGHT、VK_UP、VK_DOWN、VK_RETURN、VK_EXECUTE 、
VK_ESCAPE 及 VK_CANCEL
CM_WANTSPECIALKEY 组件讯息提供你比拦截 WM_GETDLGCODE 窗口讯息更容易且灵活的判断
方法来决定是否需要某些特殊键的讯息。当控件收到任何一个特殊键时就会送出CM_WANTSPE
CIALKEY 组件讯息给控件。

举例:
procedure TCustomGrid.CMWantSpecialKey(var Msg: TCMWantSpecialKey);
begin
inherited;
if (goEditing in Options) and (Char(Msg.CharCode) = #13) then Msg.Result := 1;
end;

注意:
当处理 VK_TAB 时,按 TAB 键的效果被限定在本控件内,换句话说就是焦点不会被定为到下
一个控件上。

相关:
Windos消息 WM_GETDLGCODE
}
procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST;
{说明:
CM_DESIGNHITTEST - TCMDesignHittest - (CM_BASE + 28)
special message never sent from within the VCL (but from a designer DLL), used only at
design time to determine whether a control wants mouse and key input. Message.Result = 1
if the control behaves like at runtime else 0

处理此消息可以在组件中加入滚动条组件并让它在设计时期能动作。
你的组件必须以以下方法建立滚动条:
举例:
TMyScrollBar = class (TScrollBar)
procedure CMDesignHitTest(var Message: TCMDesignHitTest); message CM_DESIGNHITTEST;
end;
procedure TMyScrollBar.CMDesignHitTest( var Message: TCMDesignHitTest);
begin
Message.Result := 1;
end;
你的组件必须以以下方法建立滚动条:
TMyScrollBar.Create(nil);
而不是
TMyScrollBar.Create(Self);
}

procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
procedure CNMeasureItem(var Message: TWMMeasureItem); message CN_MEASUREITEM;
{说明:
procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
procedure CNMeasureItem(var Message: TWMMeasureItem); message CN_MEASUREITEM;
这两个消息息息相关,一起做说明--
参考本资料 "Delphi->应用技巧->Delphi的消息事件->Windows消息" 中对
procedure WMMeasureItem(var Message: TWMMeasureItem); message WM_MEASUREITEM;
procedure WMDrawItem(var Message: TWMDrawItem); message WM_DRAWITEM;
的说明

举例:
参考本资料 ""Delphi->应用技巧->在Delphi中控件的绘制->Delphi中编写OwnerDraw方式
按钮的方法以及注意点" 中提供的自定义按钮的实现代码。
}

posted on 2014-09-17 23:30  云之灵  阅读(252)  评论(0编辑  收藏  举报