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; //<----