AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi In Edit-Feld nur Zahleneingaben zulassen?
Thema durchsuchen
Ansicht
Themen-Optionen

In Edit-Feld nur Zahleneingaben zulassen?

Ein Thema von mirko2000 · begonnen am 23. Jul 2004 · letzter Beitrag vom 23. Jul 2004
Antwort Antwort
mirko2000

Registriert seit: 9. Nov 2003
69 Beiträge
 
#1

In Edit-Feld nur Zahleneingaben zulassen?

  Alt 23. Jul 2004, 12:17
Ich hab schon mal etwas in google gesucht und auch was gefunden, man kann aber immer noch Sonderzeichen eingeben (Großschreibtaste drücken und die oberen Zahlentasten drücken -> !"§$%&/()=?). Wie kann ich überprüfen, ob die Shifttaste gedrückt wurde?

Delphi-Quellcode:
procedure TForm1.txtSpieltagKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Mgs: TMsg;

  procedure EatKey;
  { Clear Keyboardbuffer / Tastaturbuffer leeren }
  begin
    PeekMessage(Mgs, 0, WM_CHAR, WM_CHAR, PM_REMOVE);
  end;
begin
  if not (Char(Key) in [#8, #13, #46, #48..#57,#96..#105]) then EatKey;
end;
  Mit Zitat antworten Zitat
Jonny-Flash

Registriert seit: 18. Mai 2004
Ort: HH
18 Beiträge
 
Delphi 7 Professional
 
#2

Re: In Edit-Feld nur Zahleneingaben zulassen?

  Alt 23. Jul 2004, 12:26
Hi mirko2000,

hatte selbst mal das Problem und hab dazu folgendes gefunden:

Diese Porcedure verhindet alle Eingaben ausser Zahlen in einem Editfeld

Delphi-Quellcode:
//Variante1:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);    
var i:integer;    
    b:boolean;    
begin    
  b:=false;    
  for i:=48 to 57 do    
  begin    
    if ord(key) =i then b:=true    
  end;    
  if b=false then key:=chr(0);    
end;   


//Variante2:

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);    
var i:integer ;    
begin    
  try    
    i:=strtoint(key);    
  except    
    key:=chr(0);    
  end;    
end;   


//Variante3:

// lässt nur Zahlen zu und die Backspacetaste    
procedure KeyPressWord(Form : TForm; Sender : TObject; var Key : Char);    
begin    
  if NOT (Key in [#08, '0'..'9']) then    
    Key := #0;    
end;    


//Variante4:


// lässt nur Zahlen mit Komma zu und die Backspacetaste    
procedure KeyPressFloat(Form : TForm; Sender : TObject; var Key : Char);    
begin    
  if Key = '.then    
    Key := ',';    
  if NOT (Key in [#8, '0'..'9', ',']) then    
    Key := #0;    
end;    


//Zusatz:
//optional kann in die Procedure noch ein Code eingebaut werden, der den Cursor aufs nächste Feld //setzt, wenn du Enter drückst(die nächste Taborder):

  if Key = Chr(vk_Return) then    
  begin    
    Key := #0;    
    Form.Perform(wm_NextDlgCtl, 0, 0);    
  end;
Ich hoffe, das hilft dir weiter.
  Mit Zitat antworten Zitat
mirko2000

Registriert seit: 9. Nov 2003
69 Beiträge
 
#3

Re: In Edit-Feld nur Zahleneingaben zulassen?

  Alt 23. Jul 2004, 13:01
@Jonny-Flash: Danke, genau das hab ich gesucht!

Mir fällt jetzt aber noch auf, dass ich in das Textfeld immer noch was einfügen kann. Und zwar muss ich nur mit der rechten Maustaste in das Feld und dann auf Einfügen klicken. Kann man das auch noch irgendwie unterbinden?

[EDIT]Habs gerade durch ausprobieren herausgefunden, hat sich also erledigt![/EDIT]
  Mit Zitat antworten Zitat
franksch88

Registriert seit: 14. Jul 2004
Ort: Mainz
23 Beiträge
 
Delphi 7 Personal
 
#4

Re: In Edit-Feld nur Zahleneingaben zulassen?

  Alt 23. Jul 2004, 13:32
Kannst mal versuchen bei Edit1.OnChange mal ein Checkalgorythmus zu schreiben, so was ähnliches wie:

Code:
function TForm1.Edit1Change(Sender:TObject);
var b:byte; S:String;
begin
  S:=Edit1.Text;
  for b:=1 to Length(S) do
    if IsNotNumber(S[b]) then S:='';
  Edit1.Text:=S;
end;
Die jeweilige Funktion IsNotNumber kannst du nach deine Regeln herstellen, oder vom KeyPress entziehen.
xTr1m
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: In Edit-Feld nur Zahleneingaben zulassen?

  Alt 23. Jul 2004, 13:37
Zitat von mirko2000:
[EDIT]Habs gerade durch ausprobieren herausgefunden, hat sich also erledigt![/EDIT]
Ja toll. Und wie geht das ?
Gruß
Hansa
  Mit Zitat antworten Zitat
mirko2000

Registriert seit: 9. Nov 2003
69 Beiträge
 
#6

Re: In Edit-Feld nur Zahleneingaben zulassen?

  Alt 23. Jul 2004, 16:19
Zitat von Hansa:
Zitat von mirko2000:
[EDIT]Habs gerade durch ausprobieren herausgefunden, hat sich also erledigt![/EDIT]
Ja toll. Und wie geht das ?
Auf das Textfeld das "OnContextPopup"-Ereignis erstellen und in dieser Prozedur einfach
  Handled := true; reinschreiben.
  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 00:21 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