Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Ersetzen einer Komponente durch Ändern der DFM


Stefan S. - Mi 11.04.07 15:37
Titel: Ersetzen einer Komponente durch Ändern der DFM
Vielleicht hat jemand vor ein paar Monaten mein "Highlight-Panel"-Problem mitbekommen. Ich benutze jetzt einfach eine von TPanel abgeleitete Komponente THighlightPanel, die zusätzlich über die Ereignisse OnMouseEnter und OnMouseLeave verfügt (die die Panels in D5 so noch nicht haben).
Jetzt hab ich noch einige ältere Projekte, in denen ich die unsaubere Methode mit einem ständig laufenden Timer angewendet habe und will da diese Komponente einsetzen. Das hab ich jetzt gemacht, indem ich in der DFM-Datei des Formulars einfach jeweils "TPanel" durch "THighlightPanel" ersetzt und dann die Deklaration in der Unit angepasst habe. Funktioniert ohne Probleme. Ich hab aber schon öfters gelesen, dass man mit manuellen Änderungen in den Formulardateien aufpassen muss. Ist so etwas ungefährlich oder könnte ich mit einer einfachen Korrektur etwas durcheinander bringen? Und gibt es überhaupt einen anderen Weg, eine Komponente durch eine davon abgeleitete Komponente zu ersetzen?


mkinzler - Mi 11.04.07 16:41

Es gibt auch IDE-Tools, die das können. Wenn die ersetzte Komponenete alle Eigenschaften der ersetzen hat, dürfte es keine Probleme geben.


Coder - Mi 11.04.07 17:46

GExperts können Komponenten ersetzen und sind kostenlos.
Guck mal im Forum.

MfG


Stefan S. - Do 12.04.07 13:07

OK, ich hab mir die GExperts mal runtergeladen. Scheinen ganz praktisch zu sein. In dem einen Projekt, in dem ich die Komponenten schon durch Ändern der DFM ersetzt habe, lass ich das jetzt aber, sind ja keine dadurch entstandene Probleme ersichtlich.


alias5000 - Do 12.04.07 13:26

In der dazugehörigen pas- Datei musst du die Komponentendeklaraiton aber normalerweise dann auch noch ändern ;)
Gruß
alias5000


Stefan S. - Do 12.04.07 14:42
Titel: Re: Ersetzen einer Komponente durch Ändern der DFM
user profile iconStefan S. hat folgendes geschrieben:
Das hab ich jetzt gemacht, indem ich in der DFM-Datei des Formulars einfach jeweils "TPanel" durch "THighlightPanel" ersetzt und dann die Deklaration in der Unit angepasst habe.


Alles klar? ;)