In einem Programm, in dem ich zur Laufzeit Buttons in eine Scrollbox lege, habe ich das so gelöst:
Delphi-Quellcode:
lb := TLabel.Create(
Nil);
lb.Font := sbFavoriten.Font;
// Scrollbox
lb.Autosize := True;
lb.Caption := fdSendername.AsString;
// DB-Feld mit Sendername
btn.Hint := lb.Caption + #13 + fdKategorie.AsString;
// DB-Feld mit Senderkategorie
if lb.Width > sbFavoriten.Width - 32
then begin
lb.Caption := lb.Caption + '
...';
while lb.Width > sbFavoriten.Width - 32
do begin
lb.Caption := Copy(lb.Caption,1,Length(lb.Caption) - 4) + '
...';
end;
end;
// Button den gekürzten Text und die erforderliche Höhe zuweisen.
btn.Caption := lb.Caption;
btn.Height := lb.Height + 4;