2016-07-06 71 views
0

我已經創建了一個簡單的Delphi窗體,其中包含一個按鈕,在按下時會在運行時創建一個標籤對象。我爲顯示消息的標籤創建了雙擊事件。問題是,在創建標籤後,我必須在雙擊事件在標籤上工作之前雙擊表單。很明顯,這並不理想,因爲我希望能夠雙擊標籤並觸發事件,而不必先雙擊表單。在運行時創建的對象上雙擊事件 - Delphi

這裏是我的表單代碼:

unit Unit4; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls; 

type 
    TForm4 = class(TForm) 
    Button1: TButton; 
    procedure Button1Click(Sender: TObject); 
    procedure FormDblClick(Sender: TObject); 
    procedure MyLabelDblClick(Sender:TObject); 
    private 
    { Private declarations } 
    LabelObject: TLabel; 
    public 
    { Public declarations } 
    end; 

var 
    Form4: TForm4; 

implementation 

{$R *.dfm} 

procedure TForm4.Button1Click(Sender: TObject); 
begin 
    LabelObject := TLabel.Create(Self); 
    LabelObject.Left := 100; 
    LabelObject.Top := 100; 
    LabelObject.Width := 200; 
    LabelObject.Height := 20; 
    LabelObject.Visible := True; 
    LabelObject.Parent := Self; 
    LabelObject.Caption := 'My Run Time Label'; 
    LabelObject.Cursor := crHandPoint; 
end; 

procedure TForm4.FormDblClick(Sender: TObject); 
begin 
    LabelObject.OnDblClick := MyLabelDblClick; 
end; 

procedure TForm4.MyLabelDblClick(Sender: TObject); 
begin 
    showmessage('You double clicked My Run Time Label'); 
end; 

end. 

預先感謝這件事的任何幫助。

+1

在Button1Click事件中指定'LabelObject.OnDblClick'。 –

+0

@LURD完美,非常感謝! – lindziwiggins

+0

如果您爲表單的雙擊處理程序中的標籤分配雙擊處理程序,那麼在雙擊表單之後,標籤只會對雙擊產生反應,您應該不會感到驚訝。 –

回答

3

問題是,在創建標籤後,我必須在雙擊事件在標籤上工作之前雙擊表單。

當創建標籤時,即在Button1Click事件中,分配LabelObject.OnDblClick