Autor Beitrag
dauern
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 15.05.09 08:48 
Hallo leute ich habe ein problem vllt könnt ihr mir helfen

und zwar :

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
implementation

{$R *.dfm}

procedure TForm4.XEditChange(Sender: TObject);
begin
   try
    x := StrToInt(self.XEdit.Text);
   except
    MessageDlg('Sie müssen einen gültigen Wert für die Spalte eingeben!'+#13+#10+'Nummerische Zahlen von 0-9', mtInformation, [mbOK], 0); //wird ausgeführt weil fehler...
      XEdit.text := ''; // fehler kommt weil leeres feld is....
   end;
end;

procedure TForm4.YEditbisChange(Sender: TObject);
begin
   try
    y := StrToInt(self.YEditbis.Text);
   except
      MessageDlg('Sie müssen einen gültigen wert für den Zeilenende eingeben!'+#13+#10+'Nummerische zahlen von 0-9', mtInformation, [mbOK], 0); //wird ausgeführt weil fehler...
      YEditbis.Text := ''; // fehler kommt weil leeres feld is....
   end;
end;

procedure TForm4.YEditvonChange(Sender: TObject);
begin
   try
    k := StrToInt(self.YEditvon.Text);
   except
    MessageDlg('Sie müssen einen gültigen Wert für das Zeilenanfang eingeben!'+#13+#10+'Nummerische zahlen von 0-9', mtInformation, [mbOK], 0); //wird ausgeführt weil fehler...
      YEditvon.Text := ''; // fehler kommt weil leeres feld is....
   end;
end;

procedure TForm4.btnAbbrechClick(Sender: TObject);
begin
  modalresult := mrAbort;
end;

procedure TForm4.btnHinzuClick(Sender: TObject);
begin
   if not pruefungdercontrolls then exit;
   intAuswahl := 0;
  modalresult := mrOk;
end;

procedure TForm4.btnUeberschClick(Sender: TObject);
begin
   if not pruefungdercontrolls then exit;
   intAuswahl := 1;
  modalresult := mrOk;
end;


procedure TForm4.FormCreate(Sender: TObject);
begin
  intAuswahl := -1;
end;

function TForm4.pruefungdercontrolls: boolean;
begin
  if XEdit.Text = '' then begin
     MessageDlg('Sie müssen eine Zahl in dir Spaltenangabe eingeben!', mtInformation, [mbOK], 0);
     result := false;
  end else begin
      result := true;
   end;
begin
   if Yeditvon.Text = '' then begin
     MessageDlg('Sie müssen die Anfangszeile eingeben!', mtInformation, [mbOK], 0);
      result := false;
   end else begin
      result := true
   end;
begin
   if YEditbis.Text = '' then begin
   MessageDlg('Sie müssen die Endzeile angeben', mtInformation, [mbOK], 0);
   result := false;
   end else begin
      result := true;
   end;

   
end;
end;
end;

end.


und jetzt aber die fehlermeldung 2 mal... das erste mal weil man z.b. A eintippt und ein zweites mal weil das edit gelöscht wird! und es muss gelöscht werden weil sonst mit dem falschen werten weiter gearbeitet wird!

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Moderiert von user profile iconGausi: Topic aus Sonstiges (Delphi) verschoben am Fr 15.05.2009 um 10:13
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Fr 15.05.09 09:08 
also, als erstes, setze deinen Quellcode bitte in Delphi-tags, damit man das auch lesen kann.

(edit: Gausi war mal so nett und hat das gerade für dich nachgeholt)

Dein Problem: Du prüfst im onChange, also bei jeder Änderung des Feldes.
Dadurch wird der Fehler natürlich auch bei jeder Änderung geworfen.
Machs einfach im onExit, dort fragst du zuerst ab, ob das feld leer ist, wenn nicht, fragst du ab, ob die eingabe gültig ist, wenn's leer ist, machste einfach gar nichts

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 15.05.09 09:11 
Eine Möglichkeit wäre, generell nur Zahlen in den Edits zu erlauben. Wie das geht, steht zig-fach im Forum. Allerdings bleibt dann noch das Problem mit Copy&Paste. Eine weitere Möglichkeit wäre, eine andere Komponente zu nehmen (z.B. SpinEdit) die generell nur Zahleneingaben erlaubt.
Oder du nimmst das OnExit-Event für die Fehlermeldung, wie user profile iconzuma schon sagte. Im OnChange-Event könntest du den User z.B. durch Rotfärben der Schrift oder Einblenden eines Warn-Labels darauf hinweisen, das mit der Eingabe etwas nicht stimmt.

_________________
We are, we were and will not be.
dauern Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 15.05.09 09:39 
hey danke zuma :)
super tipp... frag mich warum ich nich selbst drauf gekommen bin :D
also alles funktioniert wie es sollte, danke ;)