Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zahleneingabe in Edit verhindern ? (https://www.delphipraxis.net/146743-zahleneingabe-edit-verhindern.html)

Kunoishi 26. Jan 2010 14:50


Zahleneingabe in Edit verhindern ?
 
ich möchte verhindern, dass in meinem Editfeld Zahlen eingegeben werden.

dazu habe ich schon eine Prozedur (mit eurer Hilfe) :P worin in meinem Editfeld der erste Buchstabe grundsätzlich in Großbuchstaben geschrieben wird.
Dieses würde ich jetzt gerne erweitern, dass in diesem Editfeld eben keine Zahlen sondern nur Buchstaben eingetragen werden können

Delphi-Quellcode:
procedure TForm.EditTNameChange(Sender: TObject);
var s: string;                                  
begin                                          
  if Length(EditTName.Text)>0 Then              
    begin                                        
     s:= EditTName.Text;                        
     s[1] := AnsiUpperCase(s)[1];                
     EditTName.Text:=s;                        
     EditTName.SelStart := Length(EditTName.Text);
   end;                                          
end;

himitsu 26. Jan 2010 15:02

Re: Zahleneingabe in Edit verhindern ?
 
Lösche doch einfach alles Unerwünschte raus?


Filtere sowas besser schon in OnKeyPress raus, denn dieses macht die Bediehung viel einfacher.
OnChange ist nur noch für Fälle, wie das Kopieren/Einfügen, welche OnKeyPress nicht abdeckt.
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var s: String;
  i: Integer;
begin
  s := TEdit(Sender).Text;
  for i := Length(s) downto 1 do
    if s[i] in ['0'..'9'] then
      Delete(s, i, 1);
  if s <> '' then
    s[1] := AnsiUpperCase(s)[1];
//if TEdit(Sender).Text <> s then {das sollte in .Text schon drin sein}
    TEdit(Sender).Text := s;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if TEdit(Sender).SelStart = 0 then
    Key := AnsiUpperCase(Key)[1];
  if Key in ['0'..'9'] then
    Key := #0;
end;
Versuche so mal mitten in dem Text zu schreiben. :zwinker:
Bei dir wird ja der Cursor jedesmal auf das Textende gesetzt.

Kunoishi 26. Jan 2010 15:09

Re: Zahleneingabe in Edit verhindern ?
 
das ist natürlich auch eine Idee,
D A N K E

Ich merke es immer wieder, gerade bei euch hier im Forum, man bekommt ständig neue Denkanstösse und Möglichkeiten
aufgestellt. ich finde das Klasse.

Ich werde es gleich mal ausprobieren.

himitsu 26. Jan 2010 15:13

Re: Zahleneingabe in Edit verhindern ?
 
Bitte


Ach ja, ich vergaß zu erwähnen:
Bei OnKeyPress, sowie OnKeyDown und Co. steht die 0, bzw. #0 für "Nichts".
Also, wenn man dort Key auf 0 setzt, dann wird die Taste verworfen und kommt nicht im Edit an.

ChrisE 26. Jan 2010 15:27

Re: Zahleneingabe in Edit verhindern ?
 
Zitat:

Zitat von himitsu
...
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var s: String;
  i: Integer;
begin
  s := TEdit(Sender).Text;
  for i := Length(s) downto 1 do
    if s[1] in ['0'..'9'] then // <------- s[i] oder s[1]?
      Delete(s, i, 1);
//...
end;
//...
...

Sollte es an der Stelle nicht s[i] heißen? :gruebel:

himitsu 26. Jan 2010 15:30

Re: Zahleneingabe in Edit verhindern ?
 
Zitat:

Zitat von ChrisE
Sollte es an der Stelle nicht s[i] heißen? :gruebel:

wäre angebracht :oops:

ChrisE 26. Jan 2010 15:33

Re: Zahleneingabe in Edit verhindern ?
 
Zitat:

Zitat von himitsu
wäre angebracht :oops:

Aber trotzdem wieder eine sehr gute Hilfe deinerseits :cheers:

Fussel9 26. Jan 2010 16:07

Re: Zahleneingabe in Edit verhindern ?
 
...wäre folgendes nicht einfacher? :

StrToIntDEF
?

dann könnte man eine if then else prüfung vornehmen...

if not (StrToIntDEF(EEingabe.Text,12345678987654321) = 12345678987654321) then
begin
...
...
...
end
else
begin
...
...
...
end;

Medium 26. Jan 2010 16:13

Re: Zahleneingabe in Edit verhindern ?
 
'Rt7u90xK_moo' enthält Zahlen, würde aber nicht umwandelbar sein. Das Vorgehen würde nicht zum Problem passen.

himitsu 26. Jan 2010 16:15

Re: Zahleneingabe in Edit verhindern ?
 
Wollt ich auch grad erwähnen ... dieses würde genau für den entgegengesetzen Fall eher zutreffen.

"nur Zahlen" <> not "keine Zahlen"


Wobei hier wohl eher "keine Ziffern" anstatt "keine Zahlen" gemeint ist.

PS: TryStrToInt wäre angebrachter gewesen, selbst wenn es auch nicht zum Thema gepaßt hätte :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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