Thema: Delphi Return to Sender

Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#8

Re: Return to Sender

  Alt 15. Nov 2005, 15:17
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
  Mit Zitat antworten Zitat