ich versuche mein Problem mal zu erklären.Ich habe ein Formular auf diesem Formular habe ich eine PageControl mit 3 Tabsheets. Auf diese 3 Tabsheets sind mehrere TLabeledEdit verteilt quasi Pro Tabsheet eine "Kategorie" finde ich für die Übersicht schöner. Ich überprüfe ein paar Pflichtfelder mit der folgenden Procedur.
Code: Alles auswählen
procedure TForm.Edit1TextExit(Sender: TObject);
var q: Integer;
begin
q:= trim(Length(TLabeledEdit(Sender).Text)) ;
if (q <=3) then
begin
ShowMessage('Bitte Text eingeben. Größer 3');
TLabeledEdit(Sender).color:=clRed;
TLabeledEdit(Sender).setFocus;
Abort;
end
else
TLabeledEdit(Sender).color:=clDefault;
end;
Mein Problem ist wenn ein User jetzt z.b. die Message angezeigt bekommt geht der Focus auf das Feld zurück und es wird Rot wechselt der Benutzer jetzt aber den Tab (möchte also erstmal andere Felder ausfüllen) dann bekomme ich einen Error "Cannot Focus a disabled ..." was natürlich auch klar ist weil die ActivePage ja dieses TLabeledEdit Feld ja nicht anzeigt.
Meine Frage jetzt wie kann ich das umgehen?
Überlegung :
In der Procedur das Aktuelle Tabsheet(AktivePage) abfragen und dann den Focus auf das Feld zurück?Quasi solange das Feld nicht richtig ausgefüllt ist kommt der Benutzer auch nicht auf Tabsheet2 die nicht aktiven Tabsheets un klickbar machen (Bitte mit Code?)
Eine Möglichkeit findet sobald man auf einen anderen Tab klickt den setFocus abbrechen( Wenn das geht wie mit Code).
Welche Daten stehen im (Sender: TObject)?
Andere Möglichkeit.?
Vielen Dank