Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#7

Re: Breite der Panels in der StatusBar

  Alt 20. Mär 2008, 18:19
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.
Thomas
  Mit Zitat antworten Zitat