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

問題は、ラベルを作成した後、ダブルクリックイベントがラベルで機能する前にフォームをダブルクリックする必要があることです。

LabelObject.OnDblClickラベルを作成するとき、つまりButton1Clickイベントの内部に割り当てます。

関連する問題