![]() |
Delphi-Version: XE
TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
Hallo Kollegen
ich möchte zur Laufzeit Buttons erstellen, hierbei möchte ich auch Events angeben. Das Event zeigt immer auf eine Prozedur, die immer einen anderen Parameter hat. Also So:
Delphi-Quellcode:
Das führt beim bauen zu folgendem Fehler:
procedure MeineProzedur(msg: string);
begin ShowMessage(msg); end; {...} TButton(Compo).onClick := MeineProzedur('test'); {...} Zitat:
Danke euch, Gruß, Peter |
AW: TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
Wenn Du eine Methode zuweisen willst, muss diese eine kompatible Signatur aufweisen, d.h. dieselben Parameter vom selben Typ in derselben Reihenfolge.
|
AW: TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
OnClick ist immer eine TNotifyEvent Prozedur "of object", also immer procedure TIrgendeineKlasse.XYZClick(Sender: TObject) und keine anderen Parameter.
Wenn du wissen willst, welcher Button geklickt wurde, kannst du das entweder über "Sender as TButton" oder Button.Tag auswerten. |
AW: TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
Das geht so nicht. Erstelle in der IDE mal eine Schaltfläche und mache einen Doppelklick drauf, dann erstellt dir die IDE die Ereignisprozedur. Und so muss auch deine aussehen.
|
AW: TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
OK, sehe ich ein, danke ... das hätte ich auch selbst sehen können. Ergibt sich nur die Frage, wie ich meinen Parameter übergebe, an das Event.. :-)
|
AW: TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
Zitat:
Delphi-Quellcode:
procedure TForm1.DeinOnClickEvent(Sender: TObject);
var Button: TButton; begin if not (Sender is TButton) then Exit; Button := Sender as TButton; // Möglichkeit 1 if Button.Name = ... then // Möglichkeit 2 if Button.Caption = ... then // Möglichkeit 3 if Button.Tag = ... then // etc. end; |
AW: TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
Den as-Vergleich braucht man nicht mehr, wenn man vorher mit is geprüft hat :zwinker:. Außerdem könnte man auch noch als 4. Möglichkeit die Instanz selbst abfragen. In dem Fall kann sogar die komplette Vorprüfung entfallen.
Delphi-Quellcode:
if not (Sender is TButton) then
Exit; Button := TButton(Sender); if Button = ButtonWuppdi then //oder gleich if Sender = ButtonWuppdi then |
AW: TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
Du könntest auch
![]() |
AW: TButton zur Laufzeit onClickk := MeineProzedur('test'); => Fehler
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz