![]() |
Re: Nur Integer Werte im Edit Fenster zulassen
... und wozu dient die Zuweisung im Except-Block? Wie bewegen nix aus dem Edit und überschreiben auch nix...
|
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
Also der Code ist irgendwie wirklich nichts. :stupid: Ich würde ![]() ![]() ![]() |
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
Delphi-Quellcode:
setzen, aber er funzt. Am Anfang sollte das Edit-Feld natürlich leer sein. Dann kann man was eingeben. Es kann zu keinem Zeitpunkt etwas im Edit-Feld stehen, was kein Integer-Wert ist (wie es ja auch verlangt wurde).
If not (Edit1.Text = '') then
|
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
|
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
1. ein einfügen von Text erfolgt immernoch und würde bei dir eine Zuweisung mit undefinierten Daten ins edit bewirken (siehe Punkt 2) 2. Wenn StrToInt() einen Fehler meldet durch eine Exception, dann wird deine Variable EdText nicht initialisiert und du weist im Except-Block dem Edit einen undefinierten bzw. alten Wert zu. 3. Durch das Change Event wird es bei vielen Kombinationen die während der Eingabe auftreten (aber im Endeffekt gültig sind) zu Fehlern führen: 3a) führende Vorzeichen wie + und - 3b) Exponenten E 4. Welchen Sinn macht es bei einer fehlerhaften Eingabe den kompletten Inhalt des Edits zurück zu setzen? Das würde z.B. eine Eingabe verhindern bzw. unmöglich machen, welche während des Eingabevorgangs ungültig ist, aber im Zusammenhang mit der kompletten Eingabe wiederrum gültig. |
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
2. Wenn StrToInt einen Fehler meldet, wird der Text des Edit-Feldes wieder auf den Zustand von vor dem Change-Event gesetzt. Wenn im Edit-Feld also '234' steht und man dann ein 'b' eingeben will, bleibt '234' stehen. 3a)Das Problem kann man relativ leicht umgehen:
Delphi-Quellcode:
3b) Ich ging davon aus, dass keine Exponenten zugelassen werden dürfen. Das würde "if not key in ..." ja auch nicht besser gehen.
procedure TForm1.Edit1Change(Sender: TObject);
var temp: integer; begin If (Edit1.Text = '') or (Edit1.Text = '-') or (Edit1.Text = '+') then EdText := Edit1.Text Else Try temp := StrToInt(Edit1.Text); EdText := Edit1.Text; Except Edit1.Text := EdText; end; end; 4. Es wird ja nicht der komplette Inhalt des Edit-Feldes wieder zurückgesetzt. Nur der letzte Tastendruck (bzw. das letzte Einfügen per Strg+V oder Rechtsklick->Einfügen) wird ignoriert. Das einzige, was nicht geht (aber wahrscheinlich auch nicht gehen soll, wenn der Edit-Inhalt als Integer-Wert weiterverarbeitet werden soll), ist mit 'E' zu rechnen. Wenn du das anders siehst, würde mich ein konkretes Beispiel interessieren. |
Re: Nur Integer Werte im Edit Fenster zulassen
OK ich gebe zu, daß ich nur die erste Seite gesichtet hab und somit evtl. was überlesen habe.... aber wenn ich nur Zahlen brauchen kann benutze ich immer gerne den TSpinEdit.
|
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
![]() Aber naja, die einfachste Lösung wird mal wieder ignoriert :roll: |
Re: Nur Integer Werte im Edit Fenster zulassen
Hallo,
für kleinere Zahlenbereiche ja, für größere nicht ideal, denn dazu muss man EditorEnabled auf false setzen, und man kann nichts mehr eingeben. |
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz