![]() |
KeyDown: welches Zeichen steht hinter "Key"
Hallo,
bei OnKeyDown wird das gedrückte Zeichen in " Key: Word" angegeben. Nur, wie komm ich im OnKeyDown an dieses Zeichen dran: Mit "Chr(Key)" komm ich zwar dran, nur sind die daraus resulitierenden Zeichen immer groß geschrieben Was mach ich falsch? |
Re: KeyDown: welches Zeichen steht hinter "Key"
Das Verstaendnis der Vrogaenge ist falsch. Taste ist nicht Buchstabe.
|
Re: KeyDown: welches Zeichen steht hinter "Key"
Moin!
So könnte man das machen:
Delphi-Quellcode:
Über Sinn und Unsinn sag' ich lieber nix :mrgreen:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin Case Char(Key) of 'A'..'Z': If (ssShift in Shift) then Label1.Caption:=Char(Key) else Label1.Caption:=LowerCase(Char(Key)); '0'..'9': Label1.Caption:=LowerCase(Char(Key)); '+', '-', '*', '/': Label1.Caption:=Char(Key); else Label1.Caption:='Nicht dabei :('; end; end; Grüßle! |
Re: KeyDown: welches Zeichen steht hinter "Key"
mmh,
dann hab ich ein Problem, ich würd ja gerne OnKeyPress verwenden - nur dort erhalt ich z. B. die Entf-Taste nicht |
Re: KeyDown: welches Zeichen steht hinter "Key"
Hallo,
wenn es dir um die Entf-Taste geht:
Delphi-Quellcode:
Freundliche Grüße
procedure TDemoForm.StringGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin with Sender as TStringGrid do begin case Key of VK_DELETE: Cells[Col, Row] := ''; else Exit; end; Key := 0; end; end; |
Re: KeyDown: welches Zeichen steht hinter "Key"
Hallo,
ich möcht mein Problem nochmal schildern - denn ich denke, dass ich es nicht wirklich richtig rübergebracht habe: wie in meinem anderen ![]() Das funktioniert auch bestens. Dies mach ich im OnKeyPress so:
Delphi-Quellcode:
Soweit so gut, es wird also jede Taste angenommen bis auf die Entertaste (#13).
procedure TForm2.StringGridKeyPress(Sender: TObject; var Key: Char);
var Zeile : Integer; Spalte: Integer; begin with StringGrid do begin // Zeile := Selection.Top; Spalte := Selection.Left; If (Key in [#13]) then exit; If Key = #8 then begin If (Pred(Spalte) > 0) then Spalte := Spalte - 1 else If (Spalte = 1) and (Zeile > 1) then begin Zeile := Zeile - 1; Spalte := 40; end; StringGrid.Cells[Spalte, Zeile] := ''; StringGrid.Col := Spalte; StringGrid.Row := Zeile; exit; end; If (Zeile > 0) and (Spalte > 0) then begin StringGrid.Cells[Spalte, Zeile] := Key; If Spalte < 40 then StringGrid.Col := Spalte + 1 else If Zeile <= 3 then begin StringGrid.Col := 1; StringGrid.Row := Zeile + 1; end; end; end; end; Nur, soll neben der Entertaste auch auf die Entf-Taste, Tab-Taste geprüft werden, ob diese gedrückt wurden, wenn ja, dann die Procedure beenden. Leider gibt Key in OnKeyPress für die entf und Tab-Taste nichts zurück, deshalb kann ich nicht einfach darauf prüfen. Es würde im OnKeyDown funktionieren, nur da hab ich das Problem, dass Key kein Char ist und ich deshalb nicht weiss, welches Zeichen gedrückt wurde. Ich brauch dies ja hier:
Delphi-Quellcode:
If (Zeile > 0) and (Spalte > 0) then
begin StringGrid.Cells[Spalte, Zeile] := Key; //<---- |
Re: KeyDown: welches Zeichen steht hinter "Key"
Ich dachte, du würdest in meinem Code erkennen, dass du auf virtual keys testen musst: VK_DELETE, VK_TAB, ...
|
Re: KeyDown: welches Zeichen steht hinter "Key"
Ausser dem must du den Code Aufteilen.
Alle Steuerzeichen holst du dir aus dem Onkeydown on alle anderen aus dem KeyPress |
Re: KeyDown: welches Zeichen steht hinter "Key"
Zitat:
das hab ich schon erkannt - nur leider löst dies nicht mein Problem. Ich kann natürlich mit den viertual keys auf die "Sondertasten" prüfen, nur muss ich irgendwann auch mal das Key in die Zelle schreiben, nämlich hier:
Delphi-Quellcode:
In OnKeyPress ist Key ein Char - also kein Problem, da wird das in die Zeile geschrieben, das ich auch gedrückt habe.
If (Zeile > 0) and (Spalte > 0) then
begin StringGrid.Cells[Spalte, Zeile] := Key; //<---- Nur im In KeyDown ist Key ein Word und kein Char und da funktioniert das nicht mehr wie im OnKeyPress. Mit chr(Key) erhalt ich nur Schwachsinn. Anders gesagt: In OnKeyPress erhalt ich das Key als Char aber keine virtual keys Im OnKeyDown erhalt ich zwar die virtual keys, aber Key nicht als char sondern als word |
Re: KeyDown: welches Zeichen steht hinter "Key"
Zitat:
Schreib doch mal lieber, warum du überhaupt das Zeichen in das StringGrid packen willst. Was ist der Sinn dahinter? Und warum trennst du nicht die Daten von der Oberfläche? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz