Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Ereignisbehandlung in eigener Komponente soll erhalten bleib
UweK - Mi 25.04.18 11:11
Titel: Ereignisbehandlung in eigener Komponente soll erhalten bleib
Guten Tag
Ich habe eine verschönerte Komponente TMyEdit = class(TEdit) geschrieben. Diese prüft beim Verlassen in ihrem Ereignis OnExit automatisch, ob der Eingabetext eine korrekte Fließkommazahl darstellt, und färbt widrigenfalls den Eingabetext rot. Von diesem TMyEdit habe ich mehrere Instanzen in meinem Formular. Hier möchte ich im OnExit einer jeden Instanz eine gültige Eingabe automatisch in eine zugehörige Zahlen-Variable schreiben, und für jede ungültige Eingabe eine individuelle Fehlermeldung anzeigen. Jeweils einzeln funktioniert das. Wenn ich den OnExits im Formular aber Prozeduren zuweise, verschwindet leider das ursprünglich in TMyEdit implementierte Verhalten. Da wird wohl das ursprüngliche OnExit durch das neue OnExit nicht ergänzt, sondern ersetzt.
Wie kann ich erreichen, dass beides ausgeführt wird, zuerst das Umfärben (das für jede Instanz das gleiche Verhalten zeigen soll und deshalb am besten in der Komponente liegt), und dann die Variablenzuweisung (die für jede Instanz verschieden ist und deshalb nur im Formular liegen kann)?
Vielen Dank für Tipps.
jasocul - Mi 25.04.18 11:39
Das existierende OnExit merken und dann an der richtigen Stelle zusätzlich aufrufen.
Sinspin - Mi 25.04.18 11:52
Da es sich ja um eine abgeleitete Komponente handelt hast Du Zugriff auf die als protected deklarierten Methoden.
Also kannst Du DoExit überschreiben. Aber dann nicht vergessen via inherited die geerbte Methode aufzurufen.
jaenicke - Mi 25.04.18 14:23
jasocul hat folgendes geschrieben : |
Das existierende OnExit merken und dann an der richtigen Stelle zusätzlich aufrufen. |
Das sollte man wirklich nur im äußersten Notfall machen. Wenn eine Komponente sauber entworfen ist, geht es normalerweise auch sauber, meistens so wie es
Sinspin für diesen Fall beschrieben hat.
jasocul - Mi 25.04.18 15:06
Sinspin und
jaenicke haben natürlich Recht.
Wenn du schon eine eigene Komponente erstellt hast, dann solltest du meinen Vorschlag ignorieren. :wink:
UweK - Mi 25.04.18 17:41
Vielen Dank. Das DoExit ist die Lösung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!