Einzelnen Beitrag anzeigen

Benutzerbild von Delphi-Freak
Delphi-Freak

Registriert seit: 26. Sep 2004
Ort: Wien Nähe (Österreich)
321 Beiträge
 
Delphi 2006 Architect
 
#4

Re: StatusBar: Panel-Breite herausfinden

  Alt 21. Aug 2005, 20:42
Zitat von shmia:
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;
Wenn auch schon etwas viel später ... ich habe nämlich den Code verwendet, nur hat er nicht und nicht funktioniert.
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
Gerhard Pfister
*
»To him who loves us and has freed us from our sins by his blood [...] be glory and power for ever and ever! Amen.« (Revelation*1,*5?6)
  Mit Zitat antworten Zitat