StringGrid - CursorPos

jozkan

Jak w temacie:

//SG:TStringGrid;
//SG.Options:=SG.Options+[goEditing,goAlwaysShowEditor]

procedure SetStringGridCursorPos(SG:TWinControl;cur_pos:Integer);
var
  Wnd:Integer;
begin
  Wnd:=GetWindow(SG.Handle,GW_CHILD);
  SendMessage(Wnd,EM_SETSEL,cur_pos,cur_pos);
  SG.SetFocus;
end;
function GetStringGridCursorPos(SG:TWinControl):Integer;
var
  Wnd:Integer;
begin
  Wnd:=GetWindow(SG.Handle,GW_CHILD);
  SendMessage(Wnd,EM_GETSEL,Integer(@Result),0);
end;

Przykład wykorzystania

procedure StringGridInsertText(SG:TWinControl;tekst:string);
var
   cur_pos,Col,Row:Integer;
   cell_text:string;
begin
   cur_pos:=GetStringGridCursorPos(SG);
   Col:=(SG as TStringGrid).Col;
   Row:=(SG as TStringGrid).Row;
   cell_text:=(SG as TStringGrid).Cells[Col,Row];
   Insert(tekst,cell_text,cur_pos+1);
   (SG as TStringGrid).Cells[Col,Row]:=cell_text;
end;
FAQ

3 komentarzy

Rzeczywiście, z informacji zawartych na tych stronach korzystają również początkujący programiści i dobrze byłoby dowiedzieć się czegoś więcej o tym, co tutaj znajdujemy

A może parę słów wyjaśnienia? Nie wszyscy wiedzą o co chodzi.

Ja też NIC z tego nie rozumiem :C A chiałbym...