AGB  ·  Datenschutz  ·  Impressum  







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

Überprüfen von Edit

Ein Thema von MisterC · begonnen am 15. Feb 2012 · letzter Beitrag vom 16. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2      
MisterC

Registriert seit: 14. Feb 2012
11 Beiträge
 
Delphi 7 Personal
 
#1

Überprüfen von Edit

  Alt 15. Feb 2012, 19:20
Ich habe ma eine Frage.
Wie kann ich überprüfen ob in einem Tedit (Bei mir Heißst es Port),
ob eine Zahl eingegeben wurde und wenn nicht das die nachricht Bitte Port eingeben ausgegeben wird.
LG MisterC
ps:Ich hätte die Idee es mit einer If Methode zu machen.
Fabian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: Überprüfen von Edit

  Alt 15. Feb 2012, 19:24
Prüf einfach mit Delphi-Referenz durchsuchenTryStrToInt. Wenn das fehlschlägt, steht keine verwertbare Zahl im Edit.
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Überprüfen von Edit

  Alt 15. Feb 2012, 19:29
Oder eine Komponente nehmen, welche nur Nummern annimmt.

In neueren Delphiversionen Delphi-Referenz durchsuchenTEdit.NumbersOnly, für ältere verstecken sich hier und da (in der DP) Codes/Beschreibungen, um dieses zu erreichen.
Oder ein TMaskEdit, ein TEdit mit einem TUpDown, ein TSpinEdit uvm.


zum TryStrToInt:
Dieses ins OnExit (blos nicht in OnChange), dort dann die MessageBox anzeigen und danach vielleicht noch ein (Sender as TComponent).SetFocus; .
$2B or not $2B

Geändert von himitsu (15. Feb 2012 um 19:32 Uhr)
  Mit Zitat antworten Zitat
MisterC

Registriert seit: 14. Feb 2012
11 Beiträge
 
Delphi 7 Personal
 
#4

AW: Überprüfen von Edit

  Alt 15. Feb 2012, 19:43
Ich nutze die dinge zum ersten mal.

Ich hab delphi7 PE
könnt ihr mir vllt. die Methoden nennen die bei mir funktionieren.
ps: könnt ihr vllt. noch in meinem Threath schauen
Fabian

Geändert von MisterC (15. Feb 2012 um 19:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Überprüfen von Edit

  Alt 15. Feb 2012, 19:58
Bis auf das NumbersOnly sollte alles Genannte bei dir funktionieren.

Ansonsten:
Hier im Forum suchenEdit nur Zahlen
Bei Google suchenDelphi Edit nur Zahlen eingeben
...
$2B or not $2B
  Mit Zitat antworten Zitat
MisterC

Registriert seit: 14. Feb 2012
11 Beiträge
 
Delphi 7 Personal
 
#6

AW: Überprüfen von Edit

  Alt 15. Feb 2012, 20:08
Welches würdest du mir den empfehlen.
Fabian
  Mit Zitat antworten Zitat
MisterC

Registriert seit: 14. Feb 2012
11 Beiträge
 
Delphi 7 Personal
 
#7

AW: Überprüfen von Edit

  Alt 15. Feb 2012, 20:18
Ich kapiers einfach nicht kann ich nicht machen das nur zahlen eigeben kann anderes wir ignoriert bitte um erklärung mit Code.

Ich hätte dazu nur die idee OnKeyPress
Fabian
  Mit Zitat antworten Zitat
verwirrt

Registriert seit: 9. Jun 2006
59 Beiträge
 
Delphi 6 Professional
 
#8

AW: Überprüfen von Edit

  Alt 15. Feb 2012, 20:27
Wenn Fremdkomponenten in Frage kommen, wäre aus den Jedis JvValidateEdit mit DisplayFormat:= dfInteger was.

Das hätte den Vorteil, dass nur Zahlen eingegeben werden können und du dir das Prüfen sparen kannst.

In einem älteren Programm hab ich das verwendet:

Delphi-Quellcode:
...
if (Key in [#8, '0'..'9']) then
  else
    begin
      begin
        Key:= #0;
      end;
  end;
...
Wobei man immer noch über die Zwischenablage Buchstaben ins Edit bekommt...

Geändert von verwirrt (15. Feb 2012 um 20:56 Uhr)
  Mit Zitat antworten Zitat
silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#9

AW: Überprüfen von Edit

  Alt 16. Feb 2012, 01:20
Ich kapiers einfach nicht kann ich nicht machen das nur zahlen eigeben kann anderes wir ignoriert bitte um erklärung mit Code.

Ich hätte dazu nur die idee OnKeyPress
Wenn Du die Idee schon hast... aber dann will ich mal nicht so sein

[edit] Arrgh, wieso hab' ich die zweite Hälfte des Posts von verwirrt übersehen? Da steht ja schon alles drin...[/edit]

Delphi-Quellcode:
procedure frmMain.edPortKeyPress(Sender: TObject; var Key: Char);
begin
 if not CharInSet(Key, [#8, #48..#57]) then
// if not (Key in [#8, #48..#57]) then //<-- auf älteren Systemen, in denen CharInSet noch nicht existiert *
   Key := #0;
end;
*“in” is dead, long live “CharInSet” (or maybe not)

Dieser Code verhindert, dass beim Tastendrücken andere tasten als Backspace und die Ziffern 1..0 "verwendet werden können".
Die Variable "key" enthält dabei den ASCII Code der Taste, die gedrückt wurde, und die eben an den Text, der schon im Edit-Feld steht, angehängt werden soll.
Wir sagen jetzt einfach: Wenn dieser ASCII Code nicht der von BACKSPACE (damit wir Fehleingaben wieder löschen können) oder der der Ziffern 1..0 ist, dann soll der Tastencode eben #0 (oder "nichts") sein.

Dieser Code alleine hat aber (mindestens) einen gravierenden Nachteil: Es ist immer noch möglich über Copy/Paste Buchstaben oder andere unerwünschte Zeichen in das Edit-Feld zu werfen.
Und dann knallt es, wenn man über StrToInt(edPort.Text) den Edit-Inhalt in eine Zahl umwandeln will.

Von daher ist der geheimnisumwitterte Vorschlag schon richtig, eine (zusätzliche) Überprüfung in das OnExit Event des Edits zu schreiben:

Delphi-Quellcode:
procedure frmMain.edPortExit(Sender: TObject);
var temp : Integer;
begin
  if not TryStrToInt(edPort.Text, temp) then
    (sender as TEdit).setFocus;
end;
Wenn also das edit-Feld verlassen wird (den Focus verlieren soll ???), dann wird geprüft, ob sich die Zahl ohne Probleme in einen Integer umwandeln lässt. Wenn das nicht der Fall ist, wenn also TryStrToInt False zurückgibt, wird der Focus wieder auf das EditFeld gesetzt.
Mit anderen Worten, solange kein "gültiger" Inhalt im edit-feld steht, kann dasselbe nicht verlassen werden.

Die Überprüfung im OnExit ist von daher schön, weil man im weiteren Verlauf des Programms praktisch sicher sein kann, dass nur "gültige" Daten (also nur Zahlen) im Edit stehen.
Unbedingt nötig ist keine der beiden Methoden, da man auch selbst im Code bei jeder Umwandlung über TryStrToInt oder StrToIntDef prüfen kann, aber etwas einfacher ist es schon

P.S. @Geheimniskrämer: Sowas, edit.NumbersOnly kannte ich noch nicht, wieder was gelernt. Danke dafür!

P.P.S. @MisterC: Sorry, aber das muss ich mal sagen: Ich habe Deinen Post dreimal lesen müssen, bis ich verstanden habe, was Du willst...
Tobias
Bitte nicht hauen , ich weiß es nicht besser

Geändert von silver-moon-2000 (16. Feb 2012 um 01:33 Uhr)
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
155 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Überprüfen von Edit

  Alt 16. Feb 2012, 08:55
Wenn also das edit-Feld verlassen wird (den Focus verlieren soll ???), dann wird geprüft, ob sich die Zahl ohne Probleme in einen Integer umwandeln lässt. Wenn das nicht der Fall ist, wenn also TryStrToInt False zurückgibt, wird der Focus wieder auf das EditFeld gesetzt.
Mit anderen Worten, solange kein "gültiger" Inhalt im edit-feld steht, kann dasselbe nicht verlassen werden.
Was denn dazu führt, dass man dann zwangsweise etwas eingeben MUSS, ansonsten reagiert das Programm auch nicht mehr auf Buttons etc.
Also dann vielleicht noch auf einen leeren String abfragen.
Delphi-Quellcode:
procedure frmMain.edPortExit(Sender: TObject);
var temp : Integer;
begin
  if (edPort.Text <> '') and not TryStrToInt(edPort.Text, temp) then
    (sender as TEdit).setFocus;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:45 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