【发布时间】:2013-04-30 02:36:03
【问题描述】:
我正在尝试使用 Vcl.FileCtrl 单元中的 MinimizeName 函数在 TLabel 上放置一个很长的文件名,但我不知道如何获取该函数使用的 MaxLen 参数 如果我硬编码一个值,我可以看到一个有效的结果。但由于表单可以调整大小,我希望它是动态的 = 在调整大小事件时发生变化。
我尝试过的一些事情是 lblLicenseFile.Width // 字符串太长 lblLicenseFile.Width - 10 //字符串太长 Trunc(lblLicenseFile.Width / lblLicenseFile.Font.Size) // 字符串很短
必须有某种方法来计算这个像素数
MinimizeName(const Filename: TFileName; Canvas: TCanvas; MaxLen: Integer): TFileName; MaxLen 是可用于在画布上绘制文件名的长度(以像素为单位)。
【问题讨论】:
-
我不明白这个问题。为什么不直接从表单的
OnResize事件中调用MinimizeName? -
如果我没有为 MaxLen 添加正确的值,则文本看起来不正常 - 要么长标签,要么短标签。
-
标签 autosize 设置为 false,我当前的代码如下所示 - 不起作用。标签文件名的字符串太长:= MinimizeName(Settings.License.LicenseFile, lblLicenseFile.Canvas, lblLicenseFile.Width); lblLicenseFile.Caption := 文件名;