delphi - 如何在 Delphi 中获取 TEdit 的 Canvas ?

标签 delphi delphi-xe8 tcanvas

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

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

不幸的是,这无法编译,因为 TEdit 确实直接具有 Canvas 属性。 Canvas 需要其字体规范。 如何访问 TEdit 的 Canvas ?

(MinimizeName 在 Vcl.FileCtrl 中声明。)

最佳答案

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

例如:

var
  Canvas: TControlCanvas;

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

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

关于delphi - 如何在 Delphi 中获取 TEdit 的 Canvas ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34119429/

相关文章:

windows - Delphi XE2 64 位应用程序和应用程序验证程序失败

delphi - 在 Delphi 中销毁表单的正确方法是什么?

php - 使用 Delphi 和 HTTP POST 执行 Web 操作

class - 与 Self 相同的后代类方法的变量是否应该有权访问其祖先的 protected 方法?

delphi - 如何在 Delphi XE 中国际化我的应用程序?

android - 如何在 iOS 和 Android 上获取应用恢复状态?

delphi - 无法在XE8中部署临时发行版

c++ - 我需要从一个目录中汇总数千个直方图

c++ - 在已编译的 ROOT (CERN) 应用程序中将 TCanvas 绘制到屏幕上