如何在Delphi中获得TEdit的画布? [英] How can I get a TEdit's canvas in Delphi?

查看:105
本文介绍了如何在Delphi中获得TEdit的画布?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想缩短文件名以适合TEdit,例如

I want to shorten a filename to fit in a TEdit, something like

Edit1.Text := MinimizeName(FileName, Edit1.Canvas, Edit1.Width);

不幸的是,由于TEdit确实具有 Canvas,因此无法编译 code>属性。画布是其字体指标所必需的。
如何访问TEdit的画布?

Unfortunately this doesn't compile because a TEdit does have a Canvas property directly. The canvas is needed for its font metrics. How can I access a TEdit's canvas?

(在Vcl.FileCtrl中声明了 MinimizeName 。)

(MinimizeName is declared in Vcl.FileCtrl.)

推荐答案

您可以使用 TControlCanvas 。您还应该考虑控件的字体。

You could use TControlCanvas. You should also take the control's Font into account.

例如:

var
  Canvas: TControlCanvas;

Canvas := TControlCanvas.Create;
try
  Canvas.Control := Edit1;
  Canvas.Font.Assign(Edit1.Font); 

  // Do something with Canvas... 
finally
  Canvas.Free;
end;

这篇关于如何在Delphi中获得TEdit的画布?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆