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

时间: 2024-10-21 03:57:07

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

jquery获取当前鼠标所在位置的坐标

$(document).ready(function(){ $(document).mousemove(function(e){ $('#xy').html("X :"+e.pageX+"| Y:"+e.pageY); }); }); <div id="xy"></div>

MFC中状态栏显示鼠标坐标位置

原文:MFC中状态栏显示鼠标坐标位置,蝈蝈 1,利用MFC向导创建一个应用工程ewq. 2,打开ResourceView,右击Menu菜单,插入Menu,在空白处双击,Caption中填入Point. 3,为Point设置下拉菜单,ID为ID_INDICATOR_POINT:Caption为point:Prompt为X:XXXX,Y:YYYY. 4,打开MainFrm.cpp,在indicators数组中的第二个位置添加ID_INDICATOR_POINT. 5,将MainFrm中的成员变量m_

android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)

  View view = getCurrentFocus();//获得当前焦点所在的view. Java代码 final int[] location = new int[2]; view.getLocationOnScreen(location); [java] view plaincopy final int[] location = new int[2]; view.getLocationOnScreen(location); 这样就可以得到该视图在全局坐标系中的x,y值,(注意这个值是

Delphi中获取Unix时间戳及注意事项(c语言中time()是按格林威治时间计算的,比北京时间多了8小时)

uses DateUtils;DateTimeToUnix(Now) 可以转换到unix时间,但是注意的是,它得到的时间比c语言中time()得到的时间大了8*60*60这是因为Now是当前时区的时间,c语言中time()是按格林威治时间计算的,北京时间比格林威治时间多了8小时DateTimeToUnix(Now)-8*60*60 就和c语言中time()得到的一样了 但我进一步研究DateTimeToUnix函数时发现,Delphi中的时间没有经过任何的转换,是直接读取系统时间 我试着改变当前

Unity 5.3 将物体转向鼠标所在位置

一.需求描述: 初始情况—— 目标需求: 二.代码 1 void Update () { 2 // 获取鼠标位置相对移动向量 3 Vector2 translation = new Vector2(Input.GetAxis("Horizontal"),Input.GetAxis("Vertical")); 4 // 根据鼠标位置相对移动向量移动物体 5 transform.Translate(translation * speed * Time.deltaTime

在JavaScript中获取当前页面的滚动位置

要获取当前页面的滚动条纵坐标位置,用: document.documentElement.scrollTop; 而不是: document.body.scrollTop; documentElement 对应的是 html 标签,而 body 对应的是 body 标签. documentElement 不常用.这容易在开发中犯错,网上很多例子,用的是 document.body.scrollTop ,实际上是取不到正确值的.(scrollTop属性是什么?有些情况下,"元素中内容"的高

Python3列表中获取相同元素出现位置的下标

前言 list: Python3的列表类型, 和其他语言中的数组类似 定义格式: l = ["a", "b", "c", "a", "b", "c", "a"] , 下文举例用到的列表x为此列表 list常用方法(文章中用到的方法): index(元素[, Start[, Stop]]) : 获取列表下标 三个参数, 后两个参数为可选参数. 一个参数, PS: l.i

获取当前鼠标所在的坐标

获取鼠标的当前坐标,可以用pageX or pageY就可以实现,代码特别的简单,代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>pageX or pageY</title> <script type="text/javascript" src="../js/jquery.js">

获取当前鼠标的位置以及组件的位置

总结: div如果要触发鼠标事件要加上css样式cusor:pointer. 原文地址:https://www.cnblogs.com/qiuyagogo/p/9597184.html