Programowanie w języku Delphi » FAQ

StringGrid - CursorPos

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;

3 komentarze

wojmysz 2010-02-07 21:28

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

Oouvek 2004-06-26 17:12

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

Kamiko 2004-10-12 18:27

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