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
Compiler Error bei onClick Ereignis bei Button
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2811
- 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
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
-
- 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
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
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
-
- Beiträge: 2120
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Compiler Error bei onClick Ereignis bei Button
Das liegt daran das Methoden noch die Information enthalten zu welchem Objekt sie gehören, normale Prozeduren nicht
Versuch mal so etwas:
Damit übergibst du die Information über das Objekt separat
Siehe: https://www.delphi-treff.de/object-pasc ... denzeiger/
Versuch mal so etwas:
Code: Alles auswählen
var m: tmethod;
M.code:=@saveworkarea;
M.data:=Nil;
Btn1.onclick:= tnotifyevent(m);
Siehe: https://www.delphi-treff.de/object-pasc ... denzeiger/