AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Buchstaben als Fehlermeldung in Editfeldern

Ein Thema von wolfaa · begonnen am 26. Jan 2011 · letzter Beitrag vom 27. Jan 2011
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 07:15
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):
SetWindowLong(Edit.Handle, GWL_STYLE, GetWindowLong(Edit.Handle, GWL_STYLE) or ES_NUMBER);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 09:18
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
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 09:25
Über die Zwischenablage bekommt man dann aber trotzdem noch Murks hinein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 09:32
Über die Zwischenablage bekommt man dann aber trotzdem noch Murks hinein.
... wenn ich mal für das Pentagon programmiere, überleg ich mir was anderes ...
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney

Geändert von rokli (27. Jan 2011 um 09:34 Uhr)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 10:00
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;
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 10:19
@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?
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 11:08
@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
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 11:14
TryStrToInt für so eine Lösung die bessere Wahl.
Delphi 5 kennt die TryStrTo... Funktionen noch nicht, war nicht sicher, ob es D7 schon kennt.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Buchstaben als Fehlermeldung in Editfeldern

  Alt 27. Jan 2011, 10:46
Ü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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr.
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