用caretPos可以得到(Line,Col),但不是像素位置,不知如何转换?
或者有其他办法?
或者有其他办法?
解决方案 »
- 旧事重提-还是应用adoquery不能删除数据的问题
- 请大家谈谈D7和D8的区别??小弟想学Delphi,但不知学哪个版本好?请各位介绍一下!!!
- 请问,如何手动创建一个IHTMLDocument2接口所对应的对象的实例?
- OLE容器中打开的word文档如何让他不显示工具栏呢
- 如何在Access数据库中存入图像啊?
- 关于。dll文件
- 怎样判断是鼠标的左键还是右键按下
- 請問哪位曾用adoquery連access數據庫﹐能否給個具體實例﹐詳細講解操作過程﹖萬分感謝﹗
- 如何在delphi中能否嵌入用vc编的exe程序啊?比如说播放视频的程序
- 怎么样使用DOS窗口下的命令行进行下载
- 用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节内容。