• 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方式
    按钮的方法以及注意点" 中提供的自定义按钮的实现代码。
    }

  • 相关阅读:
    截屏 多难未遂
    捕捉异常
    Android中缓存记忆
    Android中的线程池
    悄悄为Android中解决部分适配问题哦!
    java中的服务端跳转与客户端跳转区别与联系
    doget(),doput()方法的使用
    基本概念--同步,异步
    java--SimpleDataFormat类
    java--9
  • 原文地址:https://www.cnblogs.com/spiritofcloud/p/3978318.html
Copyright © 2020-2023  润新知