图形编辑程序里面划多义线或者多边形都是 从OnMouseDown开始, OnDblClick完成。这一连串过程 本可以通过OnMouseDown,OnMouseMove,OnDblClick配合完成现在我想写一个在函数 只在OnMouseDown(图形第一个点MouseDown时)下触发。这个函数就需要整合三个事件,我的初步设想是这样的:1.循环直到截获该控件的OnDblClick事件;
2.每次OnMouseDown (Pnts:array of TPoint)长度加一,加入Down点
3.在OnMouseMove事件中,处理界面上显示的问题我遇到的问题,就是不知截获鼠标按键事件的方法 (API?)ps: 我说得控件是个ActiveX

解决方案 »

  1.   

    问题就转为 如何截获一个控件的消息?
    Application.OnMessage可以截获整个程序的消息,有没有相应的只截获某个特定控件消息的方法?
      

  2.   

    type
       class TMyClass = class
       private 
         F_btn: TButton;
         F_OldBtnClick: TNotifyEvent;
         F_OldBtnMouseDown: TMouseEvent;
       protected
         procedure MyBtnClick(Sender: TObject);
         procedure MyBtnMouseDown(Sender: TObject;
              Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 
       public
         constructor Create(AttachedButton: TButton);
         destructor Destroy; override;  
       end; implementsconstructor TMyClass.Create(AttachedButton: TButton);
    begin
      F_btn:= AttachedButton;
      F_btn=nil then raise ....;
      
      F_OldBtnClick    := F_btn.OnClick; 
      F_OldBtnMouseDown:= F_btn.OnMouseDown;
      F_btn.OnClick    := MyBtnClick;
      F_btn.OnMouseDown:= MyBtnMouseDown;
    end;destructor TMyClass.Destroy;
    begin
      if F_btn<>nil then
      begin
        F_btn.OnClick     := F_OldBtnClick;
        F_btn.OnMouseDown := F_OldBtnMouseDown;
      end;
      inherited; 
    end;procedure TMyClass.MyBtnClick(Sender: TObject);
    begin
      if Assigned(F_OldBtnClick) then F_OldBtnClick(Sender);
      //....(your code!) 
    end;procedure TMyClass.MyBtnMouseDown(Sender: TObject;
                Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
      if Assigned(F_OldBtnMouseDown) then F_OldBtnMouseDown(Sender, Button, Shift, X, Y);
      //....(your code!)
    end; 
      

  3.   

    class TMyClass = class
     前面一个class 不要呢(当Java了 :))
      

  4.   

    lostmyway(绝对菜鸟) 
     
    要写一个类来实现啊我原以为写一个函数就可以了.