Einzelnen Beitrag anzeigen

Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#13

Re: Button erstellen und Funktion zuweisen....

  Alt 17. Sep 2003, 10:20
Es funktioniert mit einem kleinen Trick auch mit einer normalen Prozedur, allerdings darf man da dann nicht vergessen, dass Delphi intern ja noch den Self-Pointer mitgibt, eine Methode also immer einen versteckten Parameter mehr hat.
Delphi-Quellcode:
procedure DynamicClickProcedure(Self: TObject; Sender: TObject);
begin
  { Self ist immer nil, muss allerdings als Parameter enthalten sein um die richtige Parameterreihenfolge zu gewährleisten }
  if Sender is TButton then
    ShowMessage('Button ''' + TButton(Sender).Caption + ''' wurde gedrückt');
end;


procedure TForm1.FormCreate(Sender: TObject);
var
  NewButton: TButton;
begin
  NewButton := TButton.Create(Self);
  with NewButton do
  begin
    Parent := Self;
    Caption := 'Neuer Button';
    Top := 10;
    Left := 10;
    Height := 30;
    Width := 100;
    @OnClick := @DynamicClickProcedure;
  end;
end;
@Chakotay: im FormCreate-Event solltest du nie die globale Referenz (in deinem Beispiel "Form1") verwenden, sondern immer nur den Self-Pointer! Das OnCreate-Ereignis wird von der AfterConstruction-Methode aufgerufen. Zu diesem Zeitpunkt ist der Constructor zwar bereits abgearbeitet, allerdings wurde der globalen Variable noch nicht der neue Wert zugewiesen...

Edit: kleinen Fehler korrigiert - thx @ neolithos (nächstes Posting)
Manuel Pöter
  Mit Zitat antworten Zitat