rady i porady softsale > rady      

< poprzednia rada następna rada >

Jak odczytać bieżącą pozycję kursora w MemoEdit?

W celu odczytu i zmiany bieżącej pozycji kursora w MemoEdit użyto dwóch procedur: getmemorowcol (M:tmemo;var row,col:LongInt) oraz setmemorowcol (M:tmemo;var row,col:integer).

...
 implementation

 {$R *.DFM}

procedure tform1.getmemorowcol(M:tmemo;var row,col:LongInt);
begin
row:=Sendmessage(m.handle,EM_LINEFROMCHAR,m.selstart,0);
col:=m.selstart-sendmessage(m.handle,EM_LINEINDEX,row,0);
panel1.caption:=
'(wiersz,kolumna)'+'('+inttostr(row)+','+inttostr(col)+')';
end;

procedure tform1.setmemorowcol(M:tmemo;var row,col:integer);
begin
m.selstart:=SendMessage(m.handle,EM_LINEINDEX,row,0)+col;
end;

W obsłudze zdarzenia OnClick memoedita wywołujemy metodę getmemorowcol

a w metodzie OnClick dla komponentów UpDown1 i UpDown2 metodę setmemorowcol.

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
wiersz:=strtoint(edit1.text);
kolumna:=strtoint(edit2.text);
setmemorowcol(memo1,wiersz,kolumna);
memo1.setfocus;
panel1.caption:=' Pozycja kursora:'+ inttostr(memo1.selstart);
end;

W przykładzie tip23.zip po kliknięciu myszką na pozycji tekstu w memoedicie na panelu zostaną wyświetlone współrzędne (wiersz,kolumna). Przy zmianie wiersza lub kolumny, na panelu zostaje wyświetlona pozycja kursora liczona od zera.


SOFTSALE - Oprogramowanie i Szkolenia
softsale@softsale.com.pl

03-565 Warszawa , ul. Borzymowska 43 lok. 301C
tel/fax:4084840,GSM:0607612428