Zitat von
Murdock:
Nein nicht wirklich.
Ich versuch es mal anders:
if Edit1.Text = '' Then
edit1.SetFocus;
end;
if Edit2.Text = '' Then
edit2.SetFocus;
end;
.
.
.
usw. // insgesamt 10 Edit Felder
Das Problem ist jetzt beim Ablauf er überrüft das 1. Feld merkt ist leer und springt dahin.
Da musst du den Ansatz von crisw eigentlich nur ein wenig erweitern :
Delphi-Quellcode:
function isValid(const s : String) : Boolean;
begin
result := s <> ''; // oder halt beliebig anders
end;
...
...
var i : Integer;
buffer : TControl;
begin
buffer := nil;
for i := 0 to self.ControlCount - 1 do
begin
if self.Controls[i] is TEdit then
begin
if not self.isValid((self.Cotrols[i] as TEdit).Text) then
begin
self.Controls[i].Color := clRed; // Farbe ändern
buffer := self.Controls[i]; // letztes Edit das falschen Eintrag enthält merken
end; // if not self.isValid((Component[i] as TEdit).Text)
end; // if self.Component[i] is TEdit
end; // for i := 0 to self.ComponentCount - 1
// wenn mindestens ein Edit ungültige Eingabe enthielt
if assigned(buffer) then
begin
buffer.setFocus; // Focus setzen
end; // if assigned(buffer)
end;
Ein paar kleine Anmerkungen:
Da TEdit ein Control ist, solltest du über die Controls des Form iterieren. TControl bietet schon die Eigenschaft Color und die Methode setFocus. Deshalb muss an den stellen auch nicht gecastet werden. Ansonsten würde ich (wie hier) eine eigene Methode zur Validierung der Eingabe nehmen. Kann ja sein, dass du irgendwann eine andere Eingabe als gültig ansiehst.
Ja, hoffe das hilft dir weiter,
Gruß Der Unwissende