有一个TForm 上面有些控件.
要求实现当鼠标单击在这个Form上的时候(包括单击Form上的控件上和Form的标题栏上)运行一个过程,怎么实现??注意,包括标题栏.
简单的说一下思路就好.

解决方案 »

  1.   

    procedure TForm1.FormClick(Sender: TObject);
    beginend;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    beginend;一个是鼠标单击,一个是鼠标的左键按下
    就是上面两个过程,如果是控件的话,对相应的控件添加这两个过程不就行了?
      

  2.   

    procedure TForm1.MsgProc(var Msg: TMessage);
    begin
      if Msg.Msg = WM_SYSCOMMAND then
        Caption := Format('%d,%d;标题', [mouse.CursorPos.X, mouse.CursorPos.Y]);
      if Msg.Msg = WM_LButtonDown then
        Caption := Format('%d,%d;窗口', [mouse.CursorPos.X, mouse.CursorPos.Y]);  WndProc(Msg);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      self.WindowProc := MsgProc;
    end;
      

  3.   

    代码里设定就OK了,------------------------------------------------------------------
    人事考勤工资系统88!九天助建站系统8!空间300M/200元,100M/70元
     http://shop34534782.taobao.com
    拍卖1起
      

  4.   

    在每个控件clicked的事件里写通用性不是很好,可以用截获消息的办法,也可以用actionlist加过程的方法。
      

  5.   

    Application.OnMessage
       case WM_LBUTTONDOWN,WM_NCLBUTTONDOWN:
          if(GetAncestor(MSG.HWMD,GA_ROOT)=MyForm.Handle)
              dosth;
      

  6.   

    我的目的是做一个透明的的控件,暂时称为 TA 吧.
    当一个TForm上,放有一个 TA控件 并且 TA.Active := True 的时候,只要单击窗口上的任何区域都会 先运行该控件的 TA.OnClick 过程, 后面再接着运行相关的过程.比如单击的是窗口上的一个 Button 则运行 TA.OnClick, Button.OnClick..TA怎么实现???