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 Bildschirmtastatur (https://www.delphipraxis.net/101710-bildschirmtastatur.html)

Störtebeker 17. Okt 2007 17:16


Bildschirmtastatur
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe in mein Programm u.a. eine Bildschirmtastatur integriert. (s. Anhang)

Nun habe ich kleines Problem mit der BACKSPACE Taste. (im Bild die Taste "Zurück")

Für die ENTER Taste habe ich folgenden Code, der auch funzt:

Delphi-Quellcode:
procedure TForm1.Button70Click(Sender: TObject);
begin
SynEdit1.seltext:=''+#13#10+'';
end;
Nun wollte ich für die "Zurück".Taste folgenden Code setzten:

Delphi-Quellcode:
procedure TForm1.Button71Click(Sender: TObject);
begin
Keybd_event(VK_RETURN,0,0,0);
end;
Aber irgendwie funzt das nicht. Wenn ich dann auf die Taste drücke, bleibt sie gedrückt und wenn ich dann z.B. auf "P" drücke, wird die Taste doppelt gedrückt.

Fehlt noch irgnedwie was, oder geht das so überhaupt?

inherited 17. Okt 2007 17:20

Re: Bildschirmtastatur
 
VK_RETURN ist aber die Enter-Taste :gruebel:
suche mal nach keybd_event hier im Forum, dann findest du diverse Beispiele inklusive dem Code um die taste wieder "loszulassen"

Progman 17. Okt 2007 17:22

Re: Bildschirmtastatur
 
Für Backspace müsste #8 gehen, und #9 ist Tabulator.
Nur die VK_... Bezeichnung weiß ich im Moment nicht.

Störtebeker 17. Okt 2007 18:10

Re: Bildschirmtastatur
 
Natürlich: :wall: VK_RETURN = Enter

so, aber irgendwie kann ich mit VK_BACK nichts anfangen, es passiert dann nämlich überhaupt nichts. Und wenn ich es mit #8 versuche, löscht er nicht das letzte Zeichen, sondern setzt ein Zeichen. Ein Viereck.

Delphi-Quellcode:
procedure TForm1.Button70Click(Sender: TObject);
begin
SynEdit1.seltext:=''+#8+;
end;
und mit VK_BACK
Delphi-Quellcode:
procedure TForm1.Button71Click(Sender: TObject);
begin
Keybd_event(VK_BACK,0,0,0);
end;

Progman 17. Okt 2007 18:20

Re: Bildschirmtastatur
 
ich würde dir empfehlen (so hab ich das vor Jahren auch mal gemacht) ein neues Project zu machen und im FormKeyDown einzutragen: Label1.Caption:=IntToStr(Key);
Dann siehst du beim Drücken jeder Taste den VK_xxx Code als Zahl und als solche kann man sie auch verwenden anstelle VK_xxx.
So hab ich damals diese ganzen Codes ermittelt.

DelphiKlaus 17. Okt 2007 18:23

Re: Bildschirmtastatur
 
Hallo,

ich würde selbst das letzte Zeichen löschen, insbesondere da Du bei der Return-Taste zwei Zeichen hinzufügst, müsstest Du ja dann auch zwei Zeichen löschen.

MfG

Klaus


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