Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#6

Re: KeyDown: welches Zeichen steht hinter "Key"

  Alt 19. Jan 2007, 11:12
Hallo,

ich möcht mein Problem nochmal schildern - denn ich denke, dass ich es nicht wirklich richtig rübergebracht habe:

wie in meinem anderen Thread hervorgeht, will ich eine Zelle beim Tippen weiterspringen.

Das funktioniert auch bestens.

Dies mach ich im OnKeyPress so:
Delphi-Quellcode:
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;
Soweit so gut, es wird also jede Taste angenommen bis auf die Entertaste (#13).
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; //<----
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat