Hallo
Mit folgendem Code kannst du den Cursor in einer Zelle
(InplaceEditor) des TStringGrids positionieren.
Hierfür verwenden wir eine "Cracker" Klasse, da der InplaceEditor "protected" ist.
Delphi-Quellcode:
type
TGridCracker = class(TStringGrid);
{...}
implementation
{...}
procedure SetCaretPosition(Grid: TStringGrid; Col, Row, X_Pos: Integer);
begin
Grid.Col := Col;
Grid.Row := Row;
with TGridCracker(Grid) do
InplaceEditor.SelStart := X_Pos;
end;
// Ermittelt die Caret-Position der aktuellen Zelle
function GetCaretPosition(Grid: TStringGrid): Integer;
begin
with TGridCracker(Grid) do
Result := InplaceEditor.SelStart;
end;
// Beispiel: Fokusiert die Zelle(1,3) und setzt den Cursor auf Position 5
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.SetFocus;
SetCaretPosition(StringGrid1, 1, 3, 5);
end;