我自已写了一个类继承自TPanel,在其中建立了三个按钮,用的是TButton.Create()方法建立的,我现在不知如何捕获到这三个按钮的单击时的消息;请问各位该如何做才行我用winproc,但在单击时没有任何反应,多谢了各位了。

解决方案 »

  1.   

    在TPanel中发布一个事件。比如:  TMyPanel = class(TPanel)
      private
        FOnButtonClick: TNotifyEvent;
        procedure ButtonClick(Sender: TObject);
      published
        property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick;
      end;创建按钮时,加上:
    按钮.OnClick := ButtonClick;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————implementation{ TMyPanel }procedure TMyPanel.ButtonClick(Sender: TObject);
    begin
      if Assigned(FOnButtonClick) then
        FOnButtonClick(Sender);
    end;
      

  2.   

    我现在在ButtonClick中添加要执行的代码,但好像无法运行到那里。
      

  3.   

    procedure TMyPanel.ButtonClick(Sender: TObject);
    begin
      if Assigned(FOnButtonClick) then
        FOnButtonClick(Sender);
    end;
    如果按照前面朋友的说法,楼主你在ButtonClick中不需添加代码,因为你注意到没有:
     FOnButtonClick(Sender);就是说执行它的代码,这样你的三个按钮都可以复用同一段代码了。
    不过感觉你要问的不是这个问题。
    问一句,你要截获三个按钮的消息?这是你要表达的意思吗?
      

  4.   

    补充一句,按照我的理解你并不是要捕获三个按钮的消息,你是不是说,你单击按钮没有反应?那样的话,你不需要按楼上的朋友那样做,你首先要做的是检查你的Button有没有建好,你的自定义类有没有正确的分派消息,还有你在建立Button的时候,一定要指定Button1 := TButton.Create(self);这样指定Owner才能正确获得单击消息。