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.
Weisen Sie "LabelObject.OnDblClick" dem Ereignis "Button1Click" zu. –
@LURD perfekt, vielen Dank! – lindziwiggins
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. –