델파이

TRichEdit 마우스위의 라인값, 행번호, 열번호 구하기

미스터몽키 2017. 8. 14. 12:40

리치에디트의 마우스의 움직임에 따라 현재 행의 값과 행번호, 열번호를 구할 수 있다.


procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

var

  pt: TPoint;

  charindex, lineindex, charoffset: Integer;

  c: string;

  mask: integer;

  row, col: Integer;

begin

  pt := Point(X, Y);

  charindex := p_reNote.Perform(Messages.EM_CHARFROMPOS, 0, integer(@pt));

  if charindex >= 0 then

  begin

    lineindex := p_reNote.Perform(EM_EXLINEFROMCHAR, 0, charindex);

    charoffset := charindex - p_reNote.Perform(EM_LINEINDEX, lineindex, 0);

    Edit1.Text := p_reNote.Lines[lineindex];

  end;


  GetCursorPos(pt);

  pt := p_reNote.ScreenToClient(pt);

  charindex := p_reNote.Perform(Messages.EM_CHARFROMPOS, 0, integer(@pt));

  Row := p_reNote.PerForm(EM_EXLINEFROMCHAR, 0, charindex);

  Col := charindex - p_reNote.Perform(EM_LINEINDEX, Row, 0);


  Edit2.Text := inttostr(Row) + ', ' + inttostr(Col);


end;