AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Statusbar] Breite eines Panels

Ein Thema von xZise · begonnen am 20. Mär 2008 · letzter Beitrag vom 21. Mär 2008
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

[Statusbar] Breite eines Panels

  Alt 20. Mär 2008, 16:40
Hallo DP,
ich habe ein Problem mit meiner Statusbar. Da ich die Breite des Textes nicht kenne, muss ich diese erst ermitteln.
Mir stellt sich jetzt die Frage, wie man das aber macht?
Zuerst dachte ich, nehme die TextWidth Eigenschaft. Und netterweise hat die Statusbar ein Canvas. Aber damit sind alle Panel etwas zu klein.
Also habe ich hier gesucht, und bin darauf gestoßen:
Breite der Panels in der StatusBar
Aber weder mit noch ohne eingeschalteter Eigenschaft ist es zu klein!

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: [Statusbar] Breite eines Panelss

  Alt 20. Mär 2008, 16:45
Hallo,

Mache diese Font Zuweisung vor dem Aufrufen des TextWidth(...)
StatusBar.Canvas.Font := StatusBar.Font;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: [Statusbar] Breite eines Panelss

  Alt 20. Mär 2008, 16:48
Zitat von toms:
Hallo,

Mache diese Font Zuweisung vor dem Aufrufen des TextWidth(...)
StatusBar.Canvas.Font := StatusBar.Font;
Danke Damit tuts

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

Re: [Statusbar] Breite eines Panels

  Alt 20. Mär 2008, 23:58
Ich bins nochmal, und zwar sieht das ein bisschen "gedrängt" aus?

Als fehle da der Rahmen um die "Rahmen".

MfG
xZise
Miniaturansicht angehängter Grafiken
statusbar_438.png  
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: [Statusbar] Breite eines Panels

  Alt 21. Mär 2008, 06:40
Angelehnt an die Funktion von shima könnte die AutoResize Funktion so aussehen.
(verwendet anstatt die von shima verwendete TrueFontWidth Funktion Canvas.Font := Font)

Delphi-Quellcode:
uses
  CommCtrl;

procedure AutoSizeStatusbarPanels(sb: TStatusbar);
var
  iPanel: Word;
  borders : array[0..2] of Integer;
begin
  With sb do
  begin
    // Don't deal with simple panels
    if SimplePanel then Exit;
    // Assign the Font to Canvas.Font
    Canvas.Font := Font;
    // get the Borders of the Statusbar
    // border[2] = Width of the Border between Rectangles
    SendMessage(Handle, SB_GETBORDERS, 0, Integer(@borders));
    for iPanel := 0 to Panels.Count -2 do // Don't resize the last panel
    begin
     // Calculate the Width of the Panel
      Panels.Items[iPanel].Width := Canvas.TextWidth(Panels.Items[iPanel].Text) +
      borders[2] * 2 + 3; // Vertical Border * 2 + 3 extra Pixels
    end;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

Re: [Statusbar] Breite eines Panels

  Alt 21. Mär 2008, 07:04
Damit funktioniert es jedenfalls unter Vista.

Ich weiß nicht wie das nachher mit anderen Styles ist.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz