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