![]() |
Buchstaben als Fehlermeldung in Editfeldern
hallo ich würde gerne wissen wie man eine fehlerabweisung mit einer try-except(?)-schleife schreibt die BUCHSTABEN abweist d.h. wenn man buchstaben in das textfeld eingibt wird eine fehlermeldung gemacht...
und das gleiche mit zahlen im negativen bereich. ich habe das schon mit 0 geschafft komme aber jetzt nicht weiter.
Delphi-Quellcode:
vielen dank im vorraus den oberen teil mit daten und maske einfach ignorieren:)
procedure TForm1.RechenBtnClick(Sender: TObject);
begin DatenAktualisieren; MaskeAktualisieren; if EdGasverbrauch.Text = '0' then begin EdGaspreis.Text:= ' '; ShowMessagePos('Bitte geben sie eine Zahl ein, die im Bereich über 0 liegt!', 300, 300); end; |
AW: Buchstaben als Fehlermeldung in Editfeldern
Guten Abend,
wandele den Text in einen Integer um und prüfe auf >0 Grüße Klaus |
AW: Buchstaben als Fehlermeldung in Editfeldern
|
AW: Buchstaben als Fehlermeldung in Editfeldern
Und wenn es unbedingt ein Standard-Edit sein muss: man kann mit TryStrToInt prüfen, ob es sich um eine Zahl handelt. Oder man erweitert den Style des Edits um ES_NUMBER (Hinweise von
![]()
Delphi-Quellcode:
SetWindowLong(Edit.Handle, GWL_STYLE, GetWindowLong(Edit.Handle, GWL_STYLE) or ES_NUMBER);
|
AW: Buchstaben als Fehlermeldung in Editfeldern
Hallo das geht wesentlich einfacher:
Du öffnest Dir die ONKEYPRESS Methode des Feldes, was Du eingrenzen möchtest und fügst ein:
Delphi-Quellcode:
Alles was in der StrScan Klammer steht, wird zugelassen und ausserdem kannst Du noch mit der Backspace Taste zurückgehen; alles andere wird ignoriert.
// nur Ziffern im Feld erlauben
if not ((StrScan('0123456789', Key) <> nil) or (Key = Char(VK_BACK))) then Key := #0; Gruß Rolf |
AW: Buchstaben als Fehlermeldung in Editfeldern
Über die Zwischenablage bekommt man dann aber trotzdem noch Murks hinein.
|
AW: Buchstaben als Fehlermeldung in Editfeldern
Zitat:
|
AW: Buchstaben als Fehlermeldung in Editfeldern
Für ein Formular hatte ich eine Lösung in der Art (Ereignisse allen Number-Edits zugeordnet):
Delphi-Quellcode:
procedure TestEditValue(AEdit : TEdit; ChangeColor : Boolean);
begin try StrToInt(AEdit.Text); if ChangeColor then AEdit.Color := clWindow except if ChangeColor then AEdit.Color := $B0B0FF else AEdit.Text := '0'; end; end; procedure TForm1.Edit1Change(Sender: TObject); begin if Sender is TEdit then TestEditValue(TEdit(Sender), True); end; procedure TForm1.Edit1Exit(Sender: TObject); begin if Sender is TEdit then TestEditValue(TEdit(Sender), False); end; |
AW: Buchstaben als Fehlermeldung in Editfeldern
@Satty67:
Wie DeddyH schon sagte, ist TryStrToInt für so eine Lösung die bessere Wahl. Warum auch sinnlos eine Exception auslösen, die man eh sofort wieder abfängt? @Satty67 & rokli: Was spricht denn nun gegen den Einsatz von SpinEdit, ggf. MaskEdit oder die von DeddyH genannte Methode? :gruebel: |
AW: Buchstaben als Fehlermeldung in Editfeldern
Zitat:
Nur das Pentagon hat den Bedarf an sauber programmierten Anwendungen :roll: |
AW: Buchstaben als Fehlermeldung in Editfeldern
@Deep-Sea
... wenns funktioniert - doch garnichts - oder!? @Sir Rufo ... da hast Du natürlich recht, aber wenn der Anwender danach sucht, wird er meist sowieso eine Möglichkeit finden, das Programm zum brennen zu bringen. Für mich ist die beschriebene Möglichkeit schnell und effizent. Gruß Rolf |
AW: Buchstaben als Fehlermeldung in Editfeldern
Zitat:
Meine Lösung hatte ich nur gewählt, weil schnell auch andere Varianten möglich sind (Float, Datum etc. durch Tausch der StrTo... Funktion) und der Benutzer eine Rückmeldung bei der Eingabe bekommt. MaskEdit geht auch, aber finde ich meistens nicht so schön von der Eingabelogik. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 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