![]() |
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? |
Re: Frame als Komponente + Event
Komponenten sind wie Legobausteine - Sie müssen einfach und universell einsetzbar sein,
sonst landen sie in der Ecke. ![]() 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. |
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? |
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. |
Re: Frame als Komponente + Event
Zitat:
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