比如我写了个软件别人在拖动我的软件的标题栏的时候,自动触发一个事件我该怎么写这个事件?

解决方案 »

  1.   

    procedure WMSyscommand(var Message: TWMSysCommand); message WM_Syscommand;
    procedure TForm1.WMSyscommand(var Message: TWMSysCommand);
    begin
      if (Message.CmdType>=$F000) and (Message.CmdType<$F013) then
        showmessage('Hello');
      inherited;
    end;已有定义的系统命令常数
     
    SC_SIZE         = 61440;
    SC_MOVE         = 61456;
    SC_MINIMIZE     = 61472;
    SC_MAXIMIZE     = 61488;
    SC_NEXTWINDOW   = 61504;
    SC_PREVWINDOW   = 61520;
    SC_CLOSE        = 61536;
    SC_VSCROLL      = 61552;
    SC_HSCROLL      = 61568;
    SC_MOUSEMENU    = 61584;
    SC_KEYMENU      = 61696;
    SC_ARRANGE      = 61712;
    SC_RESTORE      = 61728;
    SC_TASKLIST     = 61744;
    SC_SCREENSAVE   = 61760;
    SC_HOTKEY       = 61776;
    SC_DEFAULT      = 61792;
    SC_MONITORPOWER = 61808;
    SC_CONTEXTHELP  = 61824;
    SC_SEPARATOR    = 61455;
    SC_ICON         = SC_MINIMIZE;
    SC_ZOOM         = SC_MAXIMIZE;未定义的系统命令常数: 
    61441: 拖动左边框
    61442: 拖动右边框
    61443: 拖动上边框
    61444: 拖动左上角
    61445: 拖动右上角
    61446: 拖动下边框
    61447: 拖动左下角
    61448: 拖动右下角61458: 拖动标题栏61558: 横向滚动条滚动
    61574: 双击横向滚动条
    61575: 纵向滚动条滚动
    61559: 双击纵向滚动条
    61587: 点击最小化图标
    61490: 在非最大化时双击标题栏
    61730: 在最大化时双击标题栏//可能还有...
      

  2.   

    2楼
     
    begin 
      if (Message.CmdType>=$F000) and (Message.CmdType <$F013) then 
        showmessage('Hello'); 
      inherited; 
    end; 
    这个代码可以用,我鼠标单击上去就触发了事件
    我想是在移动窗体时触发事件或者说是鼠标按住的时候触发,鼠标松开触发另外一个事件该怎么做?谢谢了
      

  3.   

    我觉得应该是使用这几个事件:OnStartDock、OnEndDock、OnDockDrop、OnDockOver、OnUnDock
    我也没用过,楼主自己试一下吧

      

  4.   

    我弄错了,上面那几个事件不是干这个的看了2楼的对这个处理很明白
    这个事件应该是在拖动完后触发
    procedure   WMMove(var   Msg   :   TMessage);   message   WM_Move;procedure TF_Main.WMMove(var Msg: TMessage);
    begin
      if bFormCreateOver then
        edtCount.SetFocus;
    end;
      

  5.   

    procedure WMSyscommand(var Message: TWMSysCommand); message WM_Syscommand; procedure TForm1.WMSyscommand(var Message: TWMSysCommand); 
    begin 
      if (Message.CmdType>=$F000) and (Message.CmdType <$F013) then 
        showmessage('Hello'); 
      inherited; 
    end; //已有定义的系统命令常数 SC_SIZE        = 61440; 
    SC_MOVE        = 61456; 
    SC_MINIMIZE    = 61472; 
    SC_MAXIMIZE    = 61488; 
    SC_NEXTWINDOW  = 61504; 
    SC_PREVWINDOW  = 61520; 
    SC_CLOSE        = 61536; 
    SC_VSCROLL      = 61552; 
    SC_HSCROLL      = 61568; 
    SC_MOUSEMENU    = 61584; 
    SC_KEYMENU      = 61696; 
    SC_ARRANGE      = 61712; 
    SC_RESTORE      = 61728; 
    SC_TASKLIST    = 61744; 
    SC_SCREENSAVE  = 61760; 
    SC_HOTKEY      = 61776; 
    SC_DEFAULT      = 61792; 
    SC_MONITORPOWER = 61808; 
    SC_CONTEXTHELP  = 61824; 
    SC_SEPARATOR    = 61455; 
    SC_ICON        = SC_MINIMIZE; 
    SC_ZOOM        = SC_MAXIMIZE; 未定义的系统命令常数: 
    61441: 拖动左边框 
    61442: 拖动右边框 
    61443: 拖动上边框 
    61444: 拖动左上角 
    61445: 拖动右上角 
    61446: 拖动下边框 
    61447: 拖动左下角 
    61448: 拖动右下角 61458: 拖动标题栏 
    61558: 横向滚动条滚动 
    61574: 双击横向滚动条 
    61575: 纵向滚动条滚动 
    61559: 双击纵向滚动条 
    61587: 点击最小化图标 
    61490: 在非最大化时双击标题栏 
    61730: 在最大化时双击标题栏 2楼很强大!