2016-07-06 13 views
0

Ich habe ein einfaches Delphi-Formular mit einer Schaltfläche erstellt, die, wenn gedrückt, erstellt ein Label-Objekt zur Laufzeit. Ich habe ein Doppelklickereignis für das Label erstellt, das eine Nachricht auf dem Bildschirm anzeigt. Das Problem ist, dass ich nach dem Erstellen des Etiketts auf das Formular doppelklicken muss, bevor das Doppelklick-Ereignis auf dem Etikett funktioniert. Offensichtlich ist das nicht ideal, da ich gerne auf das Label doppelklicken und das Event auslösen würde, ohne erst das Formular doppelklicken zu müssen. HierDoppelklicken Ereignis auf Objekt zur Laufzeit erstellt - Delphi

ist der Code für meine Form:

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. 

Vielen Dank im Voraus für jede Hilfe in dieser Angelegenheit.

+1

Weisen Sie "LabelObject.OnDblClick" dem Ereignis "Button1Click" zu. –

+0

@LURD perfekt, vielen Dank! – lindziwiggins

+0

Wenn Sie den Doppelklick-Handler für das Label innerhalb des Doppelklick-Handlers für das Formular zuweisen, sollten Sie nicht überrascht sein, dass das Label nur auf einen Doppelklick reagiert, nachdem Sie das Formular doppelt angeklickt haben. –

Antwort

3

Das Problem ist, dass nach dem Erstellen der Beschriftung, muss ich auf das Formular doppelklicken, bevor das Doppelklickereignis auf dem Etikett funktioniert.

Assign LabelObject.OnDblClick beim Anlegen des Etiketts, das heißt innerhalb des Button1Click Ereignisses.