Wie kann ich bewirken, dass ein einzelnes Panel einer StatusBar neu gezeichnet wird.
Eine Möglichkeit, die ich sehe ist:
Delphi-Quellcode:
PROCEDURE RepaintPanel(StatusBar:TStatusBar; Index:Integer);
var Rect:TRect; Panel:TStatusPanel;
begin
Panel:=StatusBar.Panels[Index];
SendGetStructMessage(StatusBar.Handle, SB_GETRECT,Index,Rect);
StatusBar.Canvas.Brush.Color:=StatusBar.Color;
StatusBar.Canvas.FillRect(Rect);
case Panel.Bevel of
pbLowered : Frame3D(StatusBar.Canvas,Rect,clGray,clWhite,1);
pbRaised : Frame3D(StatusBar.Canvas,Rect,clWhite,clGray,1);
end;
StatusBar.Canvas.Font:=StatusBar.Font;
StatusBar.OnDrawPanel(StatusBar,Panel,Rect);
end;
Ich kann mir aber vorstellen, dass es eine simplere Möglichkeit gibt, z.B.
SendMessage(StatusBar.Handle,??,??,??);