Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Mehrere Tasten in einer Procedure abfragen? (https://www.delphipraxis.net/167355-mehrere-tasten-einer-procedure-abfragen.html)

mat72 26. Mär 2012 09:38

Delphi-Version: 5

Mehrere Tasten in einer Procedure abfragen?
 
Hallo,
ich habe eine Form erstellt und will von einem Textfeld in das nächste wechseln mit Enter, Tab oder Mausklick.
Mit Enter das funktioniert super. Jetzt geht leider meine Tab-Taste nicht mehr.
Ist es möglich mit folgender Procedure mehrere Tasten abzufragen?

procedure TForm3.Edit13KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 Key=#01 then
begin
try
mo2x:=StrToFloat(Edit13.Text);
Edit14.SetFocus;
mo2x:=mo2x;
except
ShowMessage('Please enter only Numbers!');
Edit13.Clear;
Edit13.SetFocus;
end;
end;
end;
end;
Vielen Dank für eure Hilfe. Bitte etwas Nachsicht, ich habe erst angefangen mit Delphi zu programmieren.
Gruss
Matthias

DeddyH 26. Mär 2012 09:41

AW: Mehrere Tasten in einer Procedure abfragen?
 
Z.B. mit case geht sowas ganz einfach:
Delphi-Quellcode:
case Key of
  #13,
  #27,
  #255:
    MachIrgendwas;
end;

himitsu 26. Mär 2012 09:45

AW: Mehrere Tasten in einer Procedure abfragen?
 
Boolesche Operatoren und Klammern verwenden?
Das sollte aber in jedem billigen Delphi-Tutorial genannt sein.

Delphi-Quellcode:
if (Key=#13) or (Key=#01) then

if Key in [#13, #01] then

if CharInSet(Key, [#13, #01]) then // Korrekte Behandlung für UnicodeDelphis

mat72 26. Mär 2012 10:07

AW: Mehrere Tasten in einer Procedure abfragen?
 
Hallo himitsu,
ich habe deinen Vorschlag mal ausprobiert.
Code:
procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if Key in [#13, #01, #09] then
    begin
     try
         ol:=StrToFloat(Edit1.Text);
         Edit2.SetFocus;
         ol:=ol;
     except
         ShowMessage('Please enter only Numbers!');
         Edit1.Clear;
         Edit1.SetFocus;
    end;
 end;
end;
Leider nimmt das Programm die Tab-Taste und die linke Maustaste nicht.
Mit Enter kann ich die Werte übernehmen. Habe ich noch einen Fehler in der Procedure?
Danke.

DeddyH 26. Mär 2012 10:12

AW: Mehrere Tasten in einer Procedure abfragen?
 
Verlagere die Prüfung einmal ins OnExit.

Mavarik 26. Mär 2012 10:16

AW: Mehrere Tasten in einer Procedure abfragen?
 
Hast Du Keypreview auf true gesetzt?

Mavarik

himitsu 26. Mär 2012 11:00

AW: Mehrere Tasten in einer Procedure abfragen?
 
Zitat:

Zitat von mat72 (Beitrag 1158562)
Leider nimmt das Programm die Tab-Taste und die linke Maustaste nicht.
Mit Enter kann ich die Werte übernehmen. Habe ich noch einen Fehler in der Procedure?
Danke.

Sicher daß #9 ein tabulator ist?

Haltepunkt auf
Delphi-Quellcode:
if Key in [#13, #01, #09] then
und nachsehn.

mat72 26. Mär 2012 11:37

AW: Mehrere Tasten in einer Procedure abfragen?
 
Hallo,
ich habe es gerade ausprobiert. Mit #09 und #01 kommt keine Antwort.
Die Codes habe ich von hier[Link]http://www.delphipraxis.net/6412-liste-der-virtuellen-tastencodes-vk_.html[/Link].
Gibt es eine andere Möglichkeit?
Vielen Dank.

Gollum 26. Mär 2012 11:45

AW: Mehrere Tasten in einer Procedure abfragen?
 
Hallo,

wenn Du mit virtuellen Tastencodes arbeitest, musst du die Ereignisse OnKeyDown und/oder OnKeyUp benutzen.

Diese Tastencodes funktionieren so nicht (richtig) im OnKeyPress-Event. Da bekommst Du z.B. nicht mit, ob mit der Maus ins Editfeld geklickt wurde.

Tab ist nicht #09 sondern nur #9.

mat72 26. Mär 2012 12:58

AW: Mehrere Tasten in einer Procedure abfragen?
 
Hallo,
auch mit OnKeyDown und/oder OnKeyUp, bekomme ich nicht das gewünschte Ergebnis.
Ich habe eine Matrix von 8 Textfeldern, über die ich Zahlen eingebe. Mit Enter oder Tab oder linke Maustaste soll in das nächste Feld gesprungen werden.
Wenn ich nur Enter nehme, funktioniert es. Mit
Key=VK_TAB
Key=#9
geht es nicht.
Hat noch jemand eine Idee?
Danke für eure Hilfe.
Gruss
Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:20 Uhr.
Seite 1 von 2  1 2      

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