delphi中获取memo鼠标所在位置的行和列(通过EM_GETRECT消息取得Rect后,自己算一下)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中获取memo鼠标所在位置的行和列(通过EM_GETRECT消息取得Rect后,自己算一下)相关的知识,希望对你有一定的参考价值。

也是看别人写的,但是不容易找到,就转发一篇delphi版本的

function GetLine(X, Y: integer): TPoint;
var
  OldFont : HFont;
  Hand : THandle;
  TM : TTextMetric;
  Rect : TRect;
begin
  Hand := GetDC(mmotest.Handle);
  try
    OldFont := SelectObject(Hand, mmotest.Font.Handle);
    try
      GetTextMetrics(Hand, TM);
      mmotest.Perform(EM_GETRECT, 0, longint(@Rect));
      Result.Y:= GetScrollPos( mmotest.Handle, SB_VERT ) +
                 (Y - Rect.Top) div (TM.tmHeight);
      Result.X:= (X - Rect.Left) div (TM.tmHeight);
      
      ShowMessage( IntToStr( Result.X ) + ‘,‘ + IntToStr( Result.Y ) );
    finally
      SelectObject(Hand, OldFont);
    end;
  finally
    ReleaseDC(mmotest.Handle, Hand);
  end;
end;

procedure TF_Main.mmotestMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  GetLine( x, y );
end;

 

http://blog.csdn.net/youthon/article/details/5781995

以上是关于delphi中获取memo鼠标所在位置的行和列(通过EM_GETRECT消息取得Rect后,自己算一下)的主要内容,如果未能解决你的问题,请参考以下文章

在 QTableView 上单击鼠标左键获取行和列?

2015.9.2 文本框中获取当前位置的所在行和列

如何从 WPF 中网格内的标签中获取行和列信息?

delphi 更改stringgrid单元格所在行的字体颜色

获取JTable点击事件的行和列

MFC 怎么将RichEdit中的光标定位在指定的行和列