Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Bei Editfeld können nur Zahlen eingegeben werden. Wie?


Biarchiv - Do 22.07.04 09:33
Titel: Bei Editfeld können nur Zahlen eingegeben werden. Wie?
Hallo,

kann man das Editfeld unter Delphi3 so sperren das nur Zahlen von
0-9999 eingegeben werden können. Also auch keine Buchstaben und anderes?


Viper - Do 22.07.04 10:00

Hi.

Du musst das über das OnKeyPress Ereignis machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TNewFileForm.EditKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0' .. '9'#8#13#35#36#37#39]) then
    Key := #0;
end;

Das erste in der Klammer sind die Zahlen und der Rest sowas wie die Enter-Taste, Entf-Taste, usw.


Dragonhunter - Do 22.07.04 10:20

Ich benutze D7 und kenn mich mit älteren Versionen nicht aus, aber bei mir funktioniert das so :

Quelltext
1:
2:
3:
4:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
        if not (Key in[#8, #9, #48 .. #57]) then Key:=#0;
end;

Erklärung:
8 = Backspace
9 = Tabulator
48 - 57 = 0 - 9

Die kompletten ASCII-Codes findest Du hier http://www.delphi-source.de/grundlagen/codes/asciiansi.php

Um die Eingabelänge des Edit-Feldes auf 4 Stellen zu beschränken mußt Du folgendes einfügen (z.B. im FormCreate-Ereignis) : Edit1.MaxLength:=7;

Hab ich alles entweder von [url]http://www.swissdelphicenter.ch[/url] oder [url]http://www.delphi-source.de[/url]. :gruebel:


maxk - Do 22.07.04 12:07

Ich kann von dieser Methode nur abraten, da sie auch das Kopieren und Einfügen mit der Tastatur unmöglich macht. Ich verwende häufig diesen Code:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Edit1Change(Sender: TObject);
var SS,SL,i:integer;
    Buf:string;
begin
 with Sender as TEdit do begin
  SS:=SelStart;
  SL:=SelLength;
  SetLength(Buf,0);
  for i:=1 to length(Text) do if Text[i] in ['0'..'9'then Buf:=Buf+Text[i];
  Text:=Buf;
  SelStart:=SS;
  SelLength:=SL;
 end;
end;
Dann geht auch Strg+C und Strg+V.


Dragonhunter - Do 22.07.04 12:23

@maxk : Stimmt. Ist mir in meinem Prog bisher nicht aufgefallen, da man in den entsprechenden Feldern eigentlich nichts kopiert/einfügt.
Aber gut zu wissen, falls ich's mal brauche sollte!


firus1983 - Fr 23.07.04 07:46

Ein guter Tipp !
Ich war schon mal drauf und drann die Frage ins Forum zu posten, weil es mir mal aufgefallen war, hab' dann aber irgendwie schwerwiegendere Probs an meinem Prog festgestellt.... *g*