![]() |
Nur Integer Werte im Edit Fenster zulassen
Hallo,
wie kann ichs machen, dass in nem Edit Fenster nur Zahlen eingegebn werden können? Aber 'Backspace' 'Entfernen' und so weiter sollen natürlich funktionieren! Gruß benisenis |
Re: Integer Werte im Edit Fenster verbieten
Nimm nen MaskedEdit.
|
Re: Integer Werte im Edit Fenster verbieten
|
Re: Integer Werte im Edit Fenster verbieten
@benisenis: Willst du nun Integerwerte verbieten (wie im Titel beschrieben) oder nur Integerwerte erlauben (wie im Beitrag beschrieben)? Korrigiere doch bitte eines davon oder steh ich wieder neben mir und lese das einfach falsch :gruebel:
|
Re: Integer Werte im Edit Fenster verbieten
Oh sorry, ich will nur Integer Werte zulassen! Und Quasi alles andere verbieten auser Backspace eben !
|
Re: Nur Integer Werte im Edit Fenster zulassen
@mkinzler, mh kannst du das bitte etwas näher erläutern?
@EDatabaseError, dass versteh ich noch weniger :) Sorry aber ich bin noch ein "ziemlicher" Newbie! |
Re: Integer Werte im Edit Fenster verbieten
Zitat:
|
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
Näheres findest du in der Delphi OH. |
Re: Nur Integer Werte im Edit Fenster zulassen
@ EDatabaseError
Ja hab ich schon gesehen, nur scheiter ich dran, dass in mein Delphi zu bekommen! |
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
|
Re: Nur Integer Werte im Edit Fenster zulassen
Wie wäre es einfach damit?
Delphi-Quellcode:
#8: Backspace
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char); begin if not (key in [#8, #45, #48..#57]) then key := #0; end; #45: Minus #48-#57: Ziffern Im OnChange muss man dann eben auf die Größe der zahl überprüfen. |
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
|
Re: Nur Integer Werte im Edit Fenster zulassen
Ja hab ich schon gesehen, nur scheiter ich dran, dass in mein Delphi zu bekommen! :gruebel:
Woran happerts? Welche delphiversion? |
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
|
Re: Nur Integer Werte im Edit Fenster zulassen
Naja ich hab bisher noch keine externen Units in mein Delphi eingebaut!
Ich hab Delphi 2005 Architekt! |
Re: Nur Integer Werte im Edit Fenster zulassen
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin if not (Key in [#8{bs}, #46{entf}, #48..#57{0-9}]) then Key := #0; end; |
Re: Nur Integer Werte im Edit Fenster zulassen
@Erazer: Fast das gleiche habe ich doch gerade gepostet. :gruebel:
Bei dir wird jedoch das Minus mit gesperrt und die Entf-Taste muss man nicht mit einschließen, die geht so oder so. |
Re: Nur Integer Werte im Edit Fenster zulassen
@Matze & erazer
Funktioniert beides nicht, kann immer noch Buchstaben eingeben! |
Re: Nur Integer Werte im Edit Fenster zulassen
Hast du im OI auch den Eventhandler mit dem Edit verbunden?
|
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
|
Re: Nur Integer Werte im Edit Fenster zulassen
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du bei deiner Edit-Feld im Objektinspektor oben auf Erreignisse und dann unten auf OnKeyPress Klickst, dort dann:
if not (Key in [#8{bs}, #46{entf}, #48..#57{0-9}]) then Key := #0; eingibts, sollte das funktionieren |
Re: Nur Integer Werte im Edit Fenster zulassen
Integer ist signed, man darf also, falls man wirklich Integerwerte zulassen will, das - und evtl auch das + nicht vergessen. Aber auch nur an der geeigneten Position.
|
Re: Nur Integer Werte im Edit Fenster zulassen
Zitat:
|
Re: Nur Integer Werte im Edit Fenster zulassen
Alternativ könnte man auch noch ein Spin-Edit (Palette Beispiele) nehmen. Dann hat man selbst überhauptkeine Arbeit mehr und die meisten DAUs erkennen auch dass man da ne Zahl eintippen soll :roll:
|
Re: Nur Integer Werte im Edit Fenster zulassen
Hinweis zu den ganzen OnKeyPress-Methoden: Diese sind keine Lösung, da man bei Ihnen immernoch mit STRG-V Code einfügen kann in das Edit, welches auch andere Zeichen als die erlaubten beinhaltet. Das setzem vom ES_NUMBER Style als alternative hat das gleiche Manko.
|
Re: Nur Integer Werte im Edit Fenster zulassen
|
Re: Nur Integer Werte im Edit Fenster zulassen
Hallo Brainshock,
wie Muetze1 schon richtig bemerkte, ist auch bei dieser Lösung das Einfügen unzulässiger Zeichen über die Zwischenablage möglich. Zudem verhindert sie zuverlässig das Einfügen eines Vorzeichens über die Tastatur. Gruß Hawkeye |
Re: Nur Integer Werte im Edit Fenster zulassen
OK, Danke für die vielen Antworten!
Ich habs jetzt so gemacht, wie Matze & Erazer mir gesagt haben! Ich glaub nicht, dass jemand versuchen wird in das Edit einzufügen, also ist es nicht so wicht ig :) Gruß Benisenis |
Re: Nur Integer Werte im Edit Fenster zulassen
Hi,
dann würde ich aber nicht direkt StrToInt auf das Edit anwenden, sondern sicherheitshalber überprüfen, ob es sich auch wirklich um einen Integer-Wert handelt. Möglichkeiten wären u.a. ![]() ![]() ![]() |
Re: Nur Integer Werte im Edit Fenster zulassen
Ich würd's so machen:
Delphi-Quellcode:
var EdText: String;
procedure TForm1.Edit1Change(Sender: TObject); var temp: integer; begin Try temp := StrToInt(Edit1.Text); EdText := Edit1.Text; Except Edit1.Text := EdText; end; end; |
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 00:32 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