有这样一个问题,请会的朋友帮忙:
form1中有一个label控件,高与宽固定,比如是500*800(多少都无所谓),现在需要向label的caption中填充文本,但每次填充的文本长度不一样,有多有少,我希望无论字多字少,都能填满label区域,也就是如果字较少的话,让字体尽量的大,如果字较多的话,让字体在尽可能大的情况下能全部在label中显示全,请会的朋友帮帮忙呀!
form1中有一个label控件,高与宽固定,比如是500*800(多少都无所谓),现在需要向label的caption中填充文本,但每次填充的文本长度不一样,有多有少,我希望无论字多字少,都能填满label区域,也就是如果字较少的话,让字体尽量的大,如果字较多的话,让字体在尽可能大的情况下能全部在label中显示全,请会的朋友帮帮忙呀!
解决方案 »
- 能不能将暴风影音用到delphi里?
- 谁能帮忙做个服务程序的框架
- 如何对表中数据四舍五入?
- 100分求一个问题,发送短信接收成功为什么收到的都是乱码?
- 网络电视???
- 用spcomm做,仪器厂给了这个,请教高手
- adocommand1.commandtext:='select * from TbProduct.dbf into TbNewProduct.dbf'执行没有结果
- 请教一个关于treeview的问题,谢谢!!
- 在console类型的程序中,怎么输出信息到控制台中?
- 怎样把一个word文档插入到数据库中??(在线等待)
- TWebBrowser控件的Navigate方法
- 程序中加入'更新動態IP地址'的功能?
procedure AdjustFontSize(ALabel: TLabel);
var
i: Integer;
R: TRect;
C: TCanvas;
const
FSizes: array[0..15] of Integer =
(8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72);
begin
C := TCanvas.Create;
try
C.Handle := GetDC(ALabel.Parent.Handle);
for i := 0 to 15 do
begin
C.Font.Size := FSizes[i];
DrawText(C.Handle, PChar(ALabel.Caption), -1, R, DT_CALCRECT);
if (R.Right - R.Left > ALabel.Width)
or (R.Bottom - R.Top > ALabel.Height) then
Break;
end;
if i = 0 then
ALabel.Font.Size := FSizes[i]
else
ALabel.Font.Size := FSizes[i - 1]
finally
C.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AdjustFontSize(Label1);
end;
这是我设置label的WordWrap为true,也就是说当label的caption内容很多时,会自动换行,而您的程序没有考虑到这一点。您还有好方法帮我解决这个问题吗?
也请其他会的高手支一招,感激不尽!