Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Edit : string,char und Tasten (https://www.delphipraxis.net/83308-edit-string-char-und-tasten.html)

daddy2000 30. Dez 2006 21:10


Edit : string,char und Tasten
 
Hallo Leute,

habe mit Edit Feld so meine Probleme.

Möchte das der User in den Editfeldern des Forms nur Zahlen eingeben kann.
Nach eingabe ins Editfeld soll er dirkt ins nächste springen.

Es sind nur Zahlen von 0-10 möglich, bei drücken des + vom Numpad soll
eine 10 ins Editfeld.

Hier schon mal ein bischen code:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin
 if not (Key in ['0'..'9',#8,#43]) then   //auf Zahlen prüfen
  Key := #0;

 if Edit1.Text = '+' Then
        Edit1.Text := '10';  //bei eingabe von + eine 10 einfügen

 PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);   //automatisch nächstes Feld

end;
Das mit der Zahlenprüfung funktioniert,
automatisch das nächste Feld auch,
aber das mit + und 10 nicht.

hoffe ihr könnt helfen!

[edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit]

DGL-luke 30. Dez 2006 21:33

Re: Edit : string,char und Tasten
 
Ich würde das so umstellen:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key='+' then
  Edit1.Text := '10'
else
begin
  if not (Key in ['0'..'9',#8,#43]) then //auf Zahlen prüfen
    Key := #0;

  PostMessage(Handle, WM_NEXTDLGCTL, 0, 0); //automatisch nächstes Feld
end;

end;
Evtl. musst du das PostMessage noch aus dem Block rausziehen, wenn du das immer haben willst.

daddy2000 31. Dez 2006 09:12

Re: Edit : string,char und Tasten
 
Hallo,

er schreibt so ins Edit +10 und springt nicht mehr ins nächste Feld.

Jürgen Thomas 31. Dez 2006 10:18

Re: Edit : string,char und Tasten
 
Zitat:

Zitat von daddy2000
er schreibt so ins Edit +10 und springt nicht mehr ins nächste Feld.

Bitte genau lesen: DGL-luke hat Dir doch die richtige Antwort schon vorgegeben:
Zitat:

Zitat von DGL-luke
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key='+' then
    Edit1.Text := '10'
  else
  begin
    if not (Key in ['0'..'9',#8,#43]) then //auf Zahlen prüfen
      Key := #0;
  end;
  //  verschoben von Jürgen Thomas
  PostMessage(Handle, WM_NEXTDLGCTL, 0, 0); //automatisch nächstes Feld
end;
Evtl. musst du das PostMessage noch aus dem Block rausziehen, wenn du das immer haben willst.

Jürgen

marabu 31. Dez 2006 10:45

Re: Edit : string,char und Tasten
 
Hallo,

das Plus Zeichen muss nach dem ersten Test vernichtet und sollte aus dem zweiten Test entfernt werden.

Hier mein Vorschlag:

Delphi-Quellcode:
procedure TDemoForm.EditKeyPress(Sender: TObject; var Key: Char);
begin
  with Sender as TEdit do
  begin
    case Key of
      '0'..'9':
        Text := Key;
      '+':
        Text := '10';
    else
      Text := '';
    end;
    Key := #0;
    if Text = '' then
      Exit;
  end;
  PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
end;
Freundliche Grüße

daddy2000 31. Dez 2006 10:58

Re: Edit : string,char und Tasten
 
Herzlichen Dank marabu und an allen,

läuft einewandfrei. :-D

Guten Rutsch an alle !!!!!!!!!!


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