Compiler Error bei onClick Ereignis bei Button

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Libor
Beiträge: 2
Registriert: Di 13. Dez 2016, 08:18
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Allgäu

Compiler Error bei onClick Ereignis bei Button

Beitrag von Libor »

Hallo Forum,

ich habe ein TreeView Element. Je nach gewähltem Eintrag soll im Panel daneben ein anderes Formular dargestellt werden. Jedes Formular enthält einen Button zum Aufruf einer Prozedur, die die Daten speichert.

Der Übersicht halber möchte ich den Quellcode für jedes Formular und das Speichern der Daten auslagern. Dazu habe ich je eine neue Unit erstellt, den Quellcode übertragen und die Unit bei uses eingebunden.

Nun bringt mir die Zeile
-> btn1.OnClick:=@saveWorkarea;
die folgende Compilermeldung:

workarea.pas(235,19) Error: Incompatible types: got "<address of procedure(TObject);Register>" expected "<procedure variable type of procedure(TObject) of object;Register>"


Vermutlich habe ich ein Verständnisproblem bei den Grundlagen und ein passender Linktipp wäre schon hilfreich?!

Danke und Gruß
Libor

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Compiler Error bei onClick Ereignis bei Button

Beitrag von m.fuchs »

saveWorkarea ist bei dir vermutlich eine normale Prozedur, es muss aber eine Methode sein. Also eine Prozedur einer Klasse.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Libor
Beiträge: 2
Registriert: Di 13. Dez 2016, 08:18
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Allgäu

Re: Compiler Error bei onClick Ereignis bei Button

Beitrag von Libor »

Hallo Michael,

das stimmt. Ich dachte ich könnte das zum Test erst mal so schnell machen.
Aber eigentlich richtig dass schlampige Arbeit nicht zugelassen wird.

Vielen Dank für Deine schnelle Rückmeldung

Gruß

Libor

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Compiler Error bei onClick Ereignis bei Button

Beitrag von Warf »

Das liegt daran das Methoden noch die Information enthalten zu welchem Objekt sie gehören, normale Prozeduren nicht
Versuch mal so etwas:

Code: Alles auswählen

var m: tmethod;
M.code:=@saveworkarea;
M.data:=Nil;
Btn1.onclick:= tnotifyevent(m);


Damit übergibst du die Information über das Objekt separat

Siehe: https://www.delphi-treff.de/object-pascal/funktions-und-methodenzeiger/

Antworten