![]() |
StatusBar: Panel-Breite herausfinden
Hallo,
wie kann man die Breite des letzten (rechten) Panels eines StatusBar herausfinden. "StatusBar.Panels[x].Width" bringt nicht das gewünschte Ergebnis, da die tatsächlich angezeigte Breite viel größer ist als die, die "StatusBar.Panels[x].Width" steht. Ausserdem kann sich die Größe des Panels auch verändern, wenn ich das Fester vergrößere. bye |
Re: StatusBar: Panel-Breite herausfinden
Delphi-Quellcode:
// liefert die Abmessungen eines Panels auf einem Statusbar
function GetStatusbarPanelRect(sb: TStatusBar; idx:Integer):TRect; begin SendMessage(sb.Handle,SB_GETRECT, idx, integer(@Result)); end; // findet das Panel unter dem Punkt Pt // nützlich, um das angeklickte Statusbar Panel zu ermitteln function GetStatusBarPanel(sb: TStatusBar; const Pt: TPoint): Integer; var i: Integer; rcPanel: TRect; begin Result := -1; for i := sb.Panels.Count-1 to 0 do begin GetStatusbarPanelRect(sb, i); if PtInRect(rcPanel,Pt) then begin Result := i; Break; end; end; end; |
Re: StatusBar: Panel-Breite herausfinden
Danke :bounce2:
Ich habe ebend auch noch gesehen, das bei der Procedure "OnDrawPanel" das Rect mitgeliefert wird. ciao |
Re: StatusBar: Panel-Breite herausfinden
Zitat:
Die Funktion GetStatusBarPanel war nämlich irgenwie fehlerhaft: verbesserte Version Result := -1; for i := sb.Panels.Count - 1 downto 0 do begin rcPanel := GetStatusbarPanelRect(sb, i); if PtInRect(rcPanel, Pt) then begin Result := i; Break; end; end; LG |
Re: StatusBar: Panel-Breite herausfinden
Habe das o.g. Beispiel bei mir mal versucht anzuwenden, bekomme aber eine Fehlermeldung:
Undefinierter Bezeichner "SB_GETRECT" Warum? |
Re: StatusBar: Panel-Breite herausfinden
Du musst vermutlich die Unit "CommCtrl" noch in deine Uses-Klausel mit aufnehmen
|
Re: StatusBar: Panel-Breite herausfinden
hallo,
ich stehe gerade irgendie auf dem Schlauch. :gruebel: Bekomme es einfach nicht hin die funktion aufzurufen. Es fehlen mir die Übergabeparameter. Wäre jmd. so nett das zu posten ?! Also wie der Aufruf der Funktion in einer Procedure aussieht. Nach Möglichkeit kurz zu den Übergabeparametern was sagen. Ich wäre echt dankbar ! Gruß FLINKER_FINGER |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz