2016-07-06 35 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