Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Frame als Komponente + Event (https://www.delphipraxis.net/137629-frame-als-komponente-event.html)

semo 24. Jul 2009 16:23


Frame als Komponente + Event
 
Ich habe gerade eine seltsame Erfahrung mit einem Frame als Komponente machen müssen.

Zur Vorgeschichte:
ich habe mehrere Programme, die fast die gleiche Oberfläche besitzen. Unter andere wird ein VirtualStringTree genutzt.
Also dachte ich mir: erstell dir einen Frame und füge in allen Programmen den Frame über die Komponentenpalette --> Frames hinzu.
Funktioniert wunderbar. Auch die Events OnGetText und OnCompareNodes des Trees kann ich setzen und diese werden auch während der Laufzeit des Programms durchlaufen.

Nun sind nicht alle Programme gleich. Bei einigen Programmen habe ich mal ein oder zwei Labels mehr.
Also dachte ich mir: kann man nicht Ableitungen von diesem Frame erstellen und den Frame als Template wie eine Komponente handhaben?
Also habe ich aus dem Frame eine Komponente erstellt - funktioniert wunderbar.

Nun erstelle ich ein neues Projekt, packe die Frame-Komponente darauf und weise das OnGetText und OnCompareNodes Event zu. Das funktioniert soweit auch, wenn man über das Strukturfenster den VirtualStringTree auswählt und dort die Events setzt. Diese beiden Events werden nur nicht zur Laufzeit des Programms durchlaufen.

Muss ich diese Events als published properties des Frames public machen?

Kann mich da jemand aufklären?

sx2008 25. Jul 2009 11:55

Re: Frame als Komponente + Event
 
Komponenten sind wie Legobausteine - Sie müssen einfach und universell einsetzbar sein,
sonst landen sie in der Ecke.
http://www.ozhobbies.eu/images/pirat...-lego-6192.jpg
Schau dir mal die Schatzkiste an; niedlich, genau so wie dein Frame in der Komponente
aber letztlich zu nix zu gebrauchen.

Ich habe natürlich schon den gleichen Fehler gemacht, und irgendwelche speziellen Sachen
in eine Komponente gepackt.
Viel Aufwand - wenig Nutzen.

semo 25. Jul 2009 12:42

Re: Frame als Komponente + Event
 
Was heißt hier Fehler?
Ich denke nicht, dass dies ein Fehler ist, wozu gibt es denn diese Funktionalität?

Hat jemand einen konstruktiveren Beitrag für mich?

Uwe Raabe 25. Jul 2009 13:08

Re: Frame als Komponente + Event
 
Es ist mir auch schon mal passiert, daß Event-Properties in Frames zur Laufzeit plötzlich nicht mehr da sind. Die Ursachen dafür konnte ich auch nicht immer ergründen (hängt auch stark von der Delphi-Version ab), aber ich habe mir angewöhnt, die Events zur Laufzeit im FormCreate oder an anderer geeigneter Stelle im Programm-Code zu setzen.

Ob es nun weise ist, den Frame als Komponente zu erstellen, mag ich hier nicht beurteilen. Als Nachteil sehe ich da den notwendigen Umweg über ein Design-Time-Package, der eine dedizierte Version der Komponente (zumindest zur Laufzeit) erzwingt, was bei der Arbeit mir mehreren Projekten in unterschiedlichen Versionen (Stichwort: Bugfixing) zu unerwünschten Nebeneffekten führt. Ich versuche eigentlich immer das gesamte Projekt versions-konsistent in einer Verzeichnisstruktur zu halten. Das Problem mit den Deisgn-Time-Packages wartet dabei allerdings noch auf seine Lösung.

semo 25. Jul 2009 23:03

Re: Frame als Komponente + Event
 
Zitat:

ich habe mir angewöhnt, die Events zur Laufzeit im FormCreate oder an anderer geeigneter Stelle im Programm-Code zu setzen
Genau das will ich ja eigentlich vermeiden.
Es soll so wenig Code wie möglich wiederholt werden müssen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 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-2025 by Thomas Breitkreuz