Zitat von
Shadowbug:
Ich berechne die breite der StatusBar - panels mit
Delphi-Quellcode:
for P := 0 to StatusBar.Panels.Count - 1 do
begin
StatusBar.Panels.Items[P].Width :=
StatusBar.Canvas.TextWidth(StatusBar.Panels.Items[P].Text);
end;
aber sie werden zu klein.
Das wird noch schlimmer wenn man die Schriften im Windows vergrößert
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
iPanel: Word;
begin
With StatusBar1 do
begin
Canvas.Font := Font; // <-- Dem Canvas die Font zuweisen:
for iPanel := 0 to Panels.Count - 1 do
begin
Panels.Items[iPanel].Width := Canvas.TextWidth(Panels.Items[P].Text) + 5;
end;
end;
end;
Zitat:
procedure AutoSizeStatusbarPanel(sb: TStatusBar; idx:Integer);
Es sollte jedoch beachtet werden, dass bei einem Pfad-String das Panel sehr gross werden könnte.
Nebenbei: SB_GETBORDERS ist in CommCtrl.pas deklariert.