怎样得到memo中光标的像素位置? 用caretPos可以得到(Line,Col),但不是像素位置,不知如何转换?或者有其他办法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 GetCursorPos得到位置以后转换一下不行吗? //用TTextMetric可以作到,但有一点就是行能作到很精确,但是列//就作不到很精确,因为不同的字符,即使Font一样,其宽度也可//能不一样,所以只能取一个平均值。procedure TForm1.CoolButton1Click(Sender: TObject);var Metric:TTextMetric; Col,Row:Integer; P:TPoint;begin Canvas.Font:=Memo1.Font; //Memo没有Canvas属性,所以只有借助于Form的Canvas来取TextMetric GetTextMetrics(Canvas.Handle,Metric); P:=Memo1.CaretPos; Row:=(Metric.tmHeight+Metric.tmInternalLeading)*P.Y; //tmHeight为字符高度,tmInternalLeading为行间距 Col:=(Metric.tmAveCharWidth)*P.X; //tmAveCharWidth为字符平均宽度。 ShowMessage(Format('(%d,%d)',[Col,Row]));end;//有关TextMetric用法,可以参考<<Delphi5.0开发人员指南>>的22.2节内容。 解析XML获取对应字段值 请问用Delphi6做的ActiveX的方法,在Htm中无法调用是怎么回事? 帮帮心各位大师.急啊. 开发一个C/S 怎样处理单据的单号???高人帮忙 大富翁 网址 是那里啊 ? 绝对很少见的问题 关于枷锁问题 程序中调用excel! 在Delphi中如何控制I/O? 关于handle 用quickreport做的报表在2000下显示正常,98下怎么那么多问题 在英文版WIN98的简体/英文版WORD2000中打印中文字,为什么有些中文打印不出来?
//就作不到很精确,因为不同的字符,即使Font一样,其宽度也可
//能不一样,所以只能取一个平均值。
procedure TForm1.CoolButton1Click(Sender: TObject);
var
Metric:TTextMetric;
Col,Row:Integer;
P:TPoint;
begin
Canvas.Font:=Memo1.Font;
//Memo没有Canvas属性,所以只有借助于Form的Canvas来取TextMetric
GetTextMetrics(Canvas.Handle,Metric);
P:=Memo1.CaretPos;
Row:=(Metric.tmHeight+Metric.tmInternalLeading)*P.Y;
//tmHeight为字符高度,tmInternalLeading为行间距
Col:=(Metric.tmAveCharWidth)*P.X;
//tmAveCharWidth为字符平均宽度。
ShowMessage(Format('(%d,%d)',[Col,Row]));
end;
//有关TextMetric用法,可以参考<<Delphi5.0开发人员指南>>的22.2节内容。