Event in von TFrame abgeleiteten Control?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1647
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Event in von TFrame abgeleiteten Control?

Beitrag von fliegermichl »

Ich habe eine von TFrame abgeleitete Klasse erstellt.

Code: Alles auswählen

type
TAddFileEvent = procedure (aFile : string) of object;

TMyFrame = class ( TFrame )
private
 fOnAddFile : TAddFileEvent;
published
 property OnAddFile : TAddFileEvent read fOnAddFile write fOnAddFile;
end;
In dem Frame sind verschiedene Methoden (z.B. Eventhandler von TSpeedButton etc) die prüfen, ob fAddFile etwas zugewiesen wurde und lösen diesen Event dann aus.
Klicke ich den Frame in meinem Formular an, erscheint der Event aber nicht im Objektinspektor.

Erzeuge ich das/den? Frame zur Laufzeit, kann ich den Event zuweisen und das funktioniert auch.
Mache ich da was falsch oder ist es nicht vorgesehen, daß man Events in Frames nicht auswählen kann?

charlytango
Beiträge: 1063
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Event in von TFrame abgeleiteten Control?

Beitrag von charlytango »

Wenn du hier im Forum nach Frames suchst wirst du merken dass Frames eine lange und leidvolle Geschichte auch schon seit alten Delphi-Zeiten haben.
fliegermichl hat geschrieben: Do 5. Dez 2024, 18:04 Klicke ich den Frame in meinem Formular an,
Das lässt mich vermuten, dass du einen Frame in der GUI eingebettet hast.
Frames sind recht brauchbar, wenn man sie grundsätzlich zur Laufzeit erstellt und einbindet. In der GUI machen sie immer wieder Probleme.

Der richtige Ansprechpartner dafür ist @af0815, der viel mit Frames arbeitet.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1647
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Event in von TFrame abgeleiteten Control?

Beitrag von fliegermichl »

charlytango hat geschrieben: Fr 6. Dez 2024, 09:00 Das lässt mich vermuten, dass du einen Frame in der GUI eingebettet hast.
Ja, das hatte ich zunächst versucht. Aber das war von Anfang an hakelig (Änderungen am Frame sind im Formular nicht bzw. nicht richtig angezeigt worden usw.)
Mich hatte halt nur gewundert, daß ich einen als published deklarierten Event gar nicht zu sehen bekam.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6785
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Event in von TFrame abgeleiteten Control?

Beitrag von af0815 »

Nein du bist am richtigen Weg.

Wie CharlyTango schon gesagt hat. Machs NICHT in der GUI, da hat Lazarus so seine Probleme (IMHO Delphikomatibel -SCNR). Vielleicht schau ich mir das nächstes Jahr einmal in der IDE an, wenn ich mehr Zeit habe.

Dynamisch erzeugt sind Frames absolut Geil. Ich verwende mittlerweile fast nur Frames in den Layouts. Damit wird alles gekapselt. Damit kann man sich einen Werkzeugkasten wie die LCL im laufe der Zeit zusammenstellen. Und ja, man kann die auch gut vererben. Ich habe eine 'BaseFrame' für mich erstellt und leite alles von der ab, weil da ist alles drinnen, was ich in meinen Programmen sowieso brauche.

Edit:
Mich hatte halt nur gewundert, daß ich einen als published deklarierten Event gar nicht zu sehen bekam.
Noch schlimmer wird es, wenn du einen überschriebenen Event wieder löscht, dann wird der originale Event nicht mehr bearbeitet, da muss man dann händisch korrigieren.
WEnn du im Frame Änderungen machst, dann ist es am besten das Projekt in Lazarus zu schliessen und wieder zu öffnen. Dann tauchen manchmal die Sachen auf. Die Änderungverfolgung bei Frames ist etwas - bedürftig.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1647
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Event in von TFrame abgeleiteten Control?

Beitrag von fliegermichl »

Danke für die Informationen. Man kann den Frame ja schön mit der IDE bearbeiten. Erzeugen und einbinden mache ich dann zur Laufzeit. Das klappt prima.
Ich hab es auch eben nochmal mit einer einfachen Property versucht. Die wird im Objektinspektor auch nicht angezeigt. Also betrifft das nicht nur Events.

charlytango
Beiträge: 1063
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Event in von TFrame abgeleiteten Control?

Beitrag von charlytango »

fliegermichl hat geschrieben: Fr 6. Dez 2024, 10:39 Man kann den Frame ja schön mit der IDE bearbeiten. Erzeugen und einbinden mache ich dann zur Laufzeit. Das klappt prima.
Yep.. genau so

Antworten