Zitat:
Ich habe verschiedenste Editfelder. Hinter diesen liegt ein Shape mit rotem Rahmen, der im onCreate durch eine Funktion erstellt und positioniert wird. Dieser Rahmen dient als Pflichtfeldmarkierung und wird jeweils im onChange Event eingeblendet oder ausgeblendet, wofür auch eine globale Funktion zuständig ist, welche dort aufgerufen wird. Die Pflichtfeldmarkierung soll jetzt aber auch ausgeschaltet werden, wenn das dazu gehörige Feld deaktiviert wird oder halt eingeschaltet werden, wenn das Feld aktiviert wird. Ich darf aber auch keine Komponenten ableiten.
So etwas oin der Art habe ich auch gemacht und benutze es auch erfolgreich.
Bei mir ist es jedoch sehr viel einfacher. Bei dir würde ich vorschlagen, einfach eine Prozedur zu schreiben, welcher du den Namen des Edits übergibst. Die rufst du dann im OnChange jedes Edits mit Rahmen auf.
Anhand des Namens des Edits kannst du dann den für das Edit zuständigen Rahmen finden. Das setzt aber eine ordentliche Benennung der Edits und der Rahmen voraus.
Immer dieser ständige Ableiten von Komponenten und hin und her. Warum so verdammt kompliziert (aber richtig, keine Frage), wenn es auch einfach und funktionabel geht?
Also etwa so
Delphi-Quellcode:
Edit OnChange
begin
MacheDiesUndDasInDiesemEdit;
PflichtFeld(EditX);
end;
procedure PflichtFeld(DeinEdit: TEdit);
begin
// Selbstverständlich mit Überprüfungen, ob es den Rahmen auch gibt usw
(DeinForm.FindComponent(DeinEdit.Name + '_Rahmen') as TShape).Enabled := true/false;
end;
Wie gesagt. Ich verwende auch soetwas nur komplett automatisiert und sehr sehr viel einfacher.