Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Buchstaben als Fehlermeldung in Editfeldern (https://www.delphipraxis.net/157844-buchstaben-als-fehlermeldung-editfeldern.html)

wolfaa 26. Jan 2011 20:52

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:
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;
vielen dank im vorraus den oberen teil mit daten und maske einfach ignorieren:)

Klaus01 26. Jan 2011 20:55

AW: Buchstaben als Fehlermeldung in Editfeldern
 
Guten Abend,

wandele den Text in einen Integer um und prüfe auf >0

Grüße
Klaus

Deep-Sea 26. Jan 2011 22:20

AW: Buchstaben als Fehlermeldung in Editfeldern
 
  1. Ein try-except-Block ist keine Schleife und wird für dein Vorhaben wohl auch nicht benötigt.
  2. Ein TSpinEdit (oder das TJvSpinEdit von den JEDIs) ist für reine Zahleingaben wohl die bessere Wahl :thumb:

DeddyH 27. Jan 2011 07:15

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 Microsoft beachten):
Delphi-Quellcode:
SetWindowLong(Edit.Handle, GWL_STYLE, GetWindowLong(Edit.Handle, GWL_STYLE) or ES_NUMBER);

rokli 27. Jan 2011 09:18

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:
// nur Ziffern im Feld erlauben
if not ((StrScan('0123456789', Key) <> nil) or (Key = Char(VK_BACK))) then
       Key := #0;
Alles was in der StrScan Klammer steht, wird zugelassen und ausserdem kannst Du noch mit der Backspace Taste zurückgehen; alles andere wird ignoriert.

Gruß
Rolf

DeddyH 27. Jan 2011 09:25

AW: Buchstaben als Fehlermeldung in Editfeldern
 
Über die Zwischenablage bekommt man dann aber trotzdem noch Murks hinein.

rokli 27. Jan 2011 09:32

AW: Buchstaben als Fehlermeldung in Editfeldern
 
Zitat:

Zitat von DeddyH (Beitrag 1077577)
Über die Zwischenablage bekommt man dann aber trotzdem noch Murks hinein.

... wenn ich mal für das Pentagon programmiere, überleg ich mir was anderes ... :?

Satty67 27. Jan 2011 10:00

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;

Deep-Sea 27. Jan 2011 10:19

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:

Sir Rufo 27. Jan 2011 10:46

AW: Buchstaben als Fehlermeldung in Editfeldern
 
Zitat:

Zitat von rokli (Beitrag 1077582)
Zitat:

Zitat von DeddyH (Beitrag 1077577)
Über die Zwischenablage bekommt man dann aber trotzdem noch Murks hinein.

... wenn ich mal für das Pentagon programmiere, überleg ich mir was anderes ... :?

Jo, denn ein normalo Anwender kann mit Murks und dadurch bedingte Exceptions super umgehen.
Nur das Pentagon hat den Bedarf an sauber programmierten Anwendungen :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 Uhr.
Seite 1 von 2  1 2      

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