Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Alle Edit-Felder auf Eingaben prüfen (https://www.delphipraxis.net/59379-alle-edit-felder-auf-eingaben-pruefen.html)

AndreasP 21. Dez 2005 16:16

Re: Alle Edit-Felder auf Eingaben prüfen
 
mahlzeit,

mit = 0 wird doch im normal fall alle edits geprüft, deshalb der forschlag mit edit = 1.

Sharky 21. Dez 2005 16:17

Re: Alle Edit-Felder auf Eingaben prüfen
 
Hai Ati,

hier mal mein Quick and Dirty Code. Es werden alle TEdits beachtet deren Tag <> 1 ist.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  test: Boolean;
  i : integer;
begin
  test := True;
  for i := 0 to Form1.ComponentCount -1 do
  begin
    if (Components[i] is TEdit) and (Components[i].Tag <> 1) then
    begin
      if Length((Components[i] as TEdit).Text) = 0 then
      begin
        test := False;
        break;
      end;
    end;
  end;

  if not (Test) then
  begin
    ShowMessage('Fehler bei der Eingabe');
  end;
end;

Ati 21. Dez 2005 16:18

Re: Alle Edit-Felder auf Eingaben prüfen
 
@dahead :wink: Nein :wink:

@Andreas hoffentlich versteh ich Deine Aussage jetzt nicht falsch. Du beziehst Dich wohl darauf das ich hinten mit einer =0 arbeite und nicht <>1. Aber beides hat nicht funktioniert

1ceman 21. Dez 2005 16:32

Re: Alle Edit-Felder auf Eingaben prüfen
 
Das Eine Edit-Feld,was nur Optional ist hat ja nen bestimmten namen(in meinen Beispiel hat das Edit Feld den Namen Test).
dann frag den doch einfach ab:

Delphi-Quellcode:
a := 1;
  for i := 0 to Form1.ComponentCount -1 do
  begin
    if (Form1.Components[i] is TEdit) and (Form1.Components[i].Tag = 0) and (Form1.Components[i].name<>'Test') then
      a := a * (Length(TEdit(Form1.Components[i]).Text));
  end;

  if a = 0 then
   begin
    ShowMessage('Bitte Eingabe überprüfen');
    exit;
   end;

Ati 21. Dez 2005 16:33

Re: Alle Edit-Felder auf Eingaben prüfen
 
HAAAAAAAAllllllllllllllllltttt Stoooopppp

Bevor ihr euch jetzt Gedanken macht!!! Ich habe nur 1 wirkliches TEdit-Feld.
Die anderen sind entweder TMaskEdit oder TDateEdit.
Mein Gott ist mir das peinlich.

1ceman 21. Dez 2005 16:39

Re: Alle Edit-Felder auf Eingaben prüfen
 
loool
ist aber eigentlich auch kein problem

musst nur die If Abfrage für alle felder, die du abfragen möchtest erweitern so z.b

Delphi-Quellcode:
a := 1;
  for i := 0 to Form1.ComponentCount -1 do
  begin
    if ((Form1.Components[i] is TEdit) or (Form1.Components[i] is TMaskEdit) or (weiter Felder) and (Form1.Components[i].Tag = 0) and (Form1.Components[i].name<>'Test') then
      a := a * (Length(TEdit(Form1.Components[i]).Text));
  end;

  if a = 0 then
   begin
    ShowMessage('Bitte Eingabe überprüfen');
    exit;
   end;
kann nur sein, das du das net mit dem or Abfragen kannst, sondern das du
Delphi-Quellcode:
if(Form1.Components[i].Tag = 0) and (Form1.Components[i].name<>'Test') then
   if (Form1.Components[i] is TEdit) then
   a := a * (Length(TEdit(Form1.Components[i]).Text));
   else Abfrag für die anderen Typen
   then a := a * (Length(TEdit(Form1.Components[i]).Value));
Musst halt alle sachen, die mit .text arbeiten in eine If-Abfrage packen und alle die z.b mit .value arbeiten in eine if-abfrage.
wenn die allerdings alle mit .text arbeiten, würd ich die obere variante nehmen.

Ati 21. Dez 2005 16:48

Re: Alle Edit-Felder auf Eingaben prüfen
 
Kann mir jemand helfen wie ich diesen Code den Umbauen muß.
Ich habe 5 xTMaskEdit, 2xTDateEdit und eine TCombobox.

Sharky 21. Dez 2005 16:50

Re: Alle Edit-Felder auf Eingaben prüfen
 
Hai Ati,

ich würde es so machen:
Delphi-Quellcode:
function EditTest(const aEdit : TEdit): boolean;
begin
  result := Length (aEdit.Text) > 0;
end;

function DateEditTest(aDateEdit : TJvDateEdit): Boolean;
begin
  result := true; // Ein Passender Code
end;

function MaskEditTest(aMaskEdit : TMaskEdit): Boolean;
begin
  result := true; // und noch ein Code;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  test: Boolean;
  i : integer;
  tmpComponent : TComponent;
begin
  test := True;

  for i := 0 to ComponentCount -1 do
  begin
    tmpComponent := Components[i];
    if (tmpComponent is TEdit) then // Test des Edit
    begin
      test := EditTest (tmpComponent as TEdit);
    end;

    if (tmpComponent is TJvDateEdit) then // Test des DateEdit
    begin
      test := DateEditTest (tmpComponent as TJvDateEdit);
    end;

    if (tmpComponent is TMaskEdit) then // Test des MaskEdit
    begin
      test := MaskEditTest (tmpComponent as TMaskEdit);
    end;

    if not (test) then
    begin
      break;
    end;
  end;

  if not (Test) then
  begin
    ShowMessage('Fehler bei der Eingabe');
  end;
end;
Ich habe also für jede zu prüfende Komponente eine Testfunktion welche man sich noch ausprogrammieren muss.

Ati 21. Dez 2005 17:15

Re: Alle Edit-Felder auf Eingaben prüfen
 
Irgendeinen kleinen Fehler habe ich noch. Hier nochmal die Funktionen und die Procedure:
Delphi-Quellcode:
function ComboTest(const acombo : TCombobox): boolean;
begin
  result := Length (acombo.Text) > 0;
end;

function DateEditTest( const aDateEdit : TDateEdit): Boolean;
begin
  result := Length (aDateEdit.Text) >0; // Ein Passender Code
end;

function MaskEditTest(const aMaskEdit : TMaskEdit): Boolean;
begin
  result := Length (aMaskEdit.text) >0; // und noch ein Code;

end;
Delphi-Quellcode:
procedure TForm1.btnspeichernClick(Sender: TObject);
var datum:TDate;
    zeit:TTime;
    i: integer;
    test:boolean;
    tmpComponent : TComponent;
begin

  for i := 0 to Form1.ComponentCount -1 do
  begin
   if (tmpComponent is TMaskEdit) then // Test des MaskEdit
   begin
      test := MaskEditTest (tmpComponent as TMaskEdit);
    end;
    if (tmpComponent is TDateEdit) then // Test des DateEdit
    begin
      test := DateEditTest (tmpComponent as TDateEdit);
    end;
    if (tmpComponent is TCombobox) then // Test der ComboBox
    begin
      test := ComboTest (tmpComponent as TCombobox);
    end;
  end;

  if not (Test) then
  begin
    ShowMessage('Fehler bei der Eingabe');
    exit;
  end;
Wenn ich jetzt alle Pflichteingaben gemacht habe meldet er mir trotzdem einen Eingabefehler......oder hast Du mir eine kleine Falle gestellt Sharky :???:

dahead 21. Dez 2005 17:22

Re: Alle Edit-Felder auf Eingaben prüfen
 
sieht so aus als hättest du vergessen, das "Test" zu initialisieren (test := True;), s. Sharkys Code.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz