Bevor ich beginne ich muss bestätigen, dass kein anderer Stapelüberlauf Beitrag zu diesem Thema michOnClick-Ereignis für dynamische Schaltfläche?
noch geholfen hatteIch habe eine dynamische Schaltfläche namens von btnApply
Es erstellt wird dynamisch auf einer dynamischen Form frmSort durch ein auf Klick Ereignis statischer Taste btnSort auf statische Form frmTable
Unter dem globalen Bereich var von frmTable wird
erklärtbtnApply: TButton;
Procedure btnApplyClick(Sender:TObject);
//other vars
Unter dem btnSort auf Klick
//other code
btnApply:= TButton.create(frmSort);
//all its properties
BtnApply.onclick:= btnApplyClick;
//other code
Dann später
Procedure btnApplyClick(Sender:TObject);
Begin
//it's code it has to execute
End;
Ich erhalte eine Fehlermeldung beim "BtnApply.onclick: = btnApplyClick;" Zeile der inkompatiblen Typen zwischen Methodenzeiger und regulärer Prozedur
Wie kann ich das machen?
Vielen Dank im Voraus
Ich sehe:
Verwenden Sie die
TMethod
Aufzeichnung das Verfahren die Taste zuweisen dein erster punkt aber leider ist mein frmSort nicht als typ wie die frmTable deklariert, sondern eher als frmSort : TForm zusammen mit dem btnApply: TButton im var. Und ich bin ein unerfahrener Programmierer, also kenne ich auch keine Klassen. Kann ich den Typ frmSort = class (TForm) umgehen oder ist es der einzige Weg – RaymondSWaltersIhr zweiter hat funktioniert. Vielen Dank man – RaymondSWalters
Es ist auch möglich, eine ** Nicht-Mitglied ** Prozedur als Event-Handler zu verwenden. Es dauert nur ein paar zusätzliche Schritte, um einzurichten. Fügen Sie einen zusätzlichen expliziten Parameter hinzu, um den 'Self'-Zeiger zu berücksichtigen:' procedure btnApplyClick (Self: Pointer; Sender: TObject); 'und verwenden Sie dann den' TMethod'-Record, um die Prozedur der Schaltfläche zuzuweisen: 'var M: TMethod; M.Code: = @btnApplyClick; M.Data: = Null; BtnApply.onclick: = TNotifyEvent (M); ' –