...get Column and Row from TRichedit/TMemo?

Author: Simon Grossenbacher
Homepage: http://www.swissdelphicenter.ch

Category: VCL

function RichRow(m: TCustomMemo): Longint;
begin
  
Result := SendMessage(m.Handle, EM_LINEFROMCHAR, m.SelStart, 0);
end;

function RichCol(m: TCustomMemo): Longint;
begin
  
Result := m.SelStart - SendMessage(m.Handle, EM_LINEINDEX, SendMessage(m.Handle,
    EM_LINEFROMCHAR, m.SelStart, 0), 0);
end;

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  
caption := Format('%d : %d', [RichCol(Form1.Memo1), RichRow(Form1.Memo1)]);
end;

procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  
Caption := Format('%d : %d', [RichCol(Form1.richedit1), RichRow(Form1.richedit1)]);
end;

// Or use CaretPos to determine the cursor's coordinates:

procedure TForm1.Button1Click(Sender: TObject);
begin
  with 
RichEdit1.CaretPos do
    
Label1.Caption := Format('(%d, %d)',[X+1,Y+1])
end;

 

printed from
www.swissdelphicenter.ch
developers knowledge base