怎样获得memo中选中区域的坐标参数,还有文本一个字符的宽度(100分)

  • 主题发起人 主题发起人 idon
  • 开始时间 开始时间
Memo没有Canvas属性,如果是共享软件的话,可以追求技术,从稍底层一点入手去做这事;<br>如果是商业软件的话分两种情况,<br>1、经常用到,同上做一个通用函数;<br>2、用一个Label,设置同样的字体和大小。<br>&nbsp; &nbsp;Canvas.TextWidth即可得到文本中某一个或一串字符的宽度。注意,“l”和"w"的宽度是不同的。<br>底层的办法我就不说了,因为我现在也不会,不过如果我自己要用到的话,很快就能会的。<br>有的东西其实用很简单的办法可以达到目的,千万别想的太复杂了。<br><br>&nbsp;
 
procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;<br>&nbsp; Shift: TShiftState; X, Y: Integer);<br>var<br>&nbsp; iRow,iCol: integer;<br>begin<br>&nbsp; iRow:=SendMessage(Memo1.handle,EM_LINEFROMCHAR,Memo1.SelStart,0);<br>&nbsp; iCol:=Memo1.SelStart-SendMessage(Memo1.Handle,EM_LINEINDEX,iRow,0);<br>&nbsp; Label1.Caption:='行: '+IntToStr(iRow+1);<br>&nbsp; Label2.Caption:='列: '+IntToStr(iCol+1);<br>end;
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部