设置TStatusBar边框颜色而不使用样式

时间:2019-04-24 08:48:23

标签: delphi border ownerdrawn

我应该在Windows的TStatusBar标准外观和黑色外观之间切换:一样,只是黑色。

我喜欢TStyleManager设置的样式,但是样式管理器使整个应用程序在某些显示器上显示乱码,因此我试图在不使用它的情况下设置颜色。

对于TStatusBar,有一个DrawPanel方法,我可以自己重写并执行绘图:

procedure TMyStatusBar.DrawPanel(Panel: TStatusPanel; const Rect: TRect);
var
  txt: string;
  r: TRect;
begin
  if Panel.Style = psOwnerDraw then begin
    if _nightMode then begin
      Canvas.Brush.color := clBlack;
      Canvas.Font.color := clWhite;
    end
    else begin
      Canvas.Brush.color := clBtnFace;
      Canvas.Font.color := clWindowText;
    end;
    Canvas.FillRect(Rect);
    r := Rect;
    txt := Panel.Text;
    Canvas.TextRect(r, txt, [tfCenter]);
  end
  else
    inherited;
end;

有一个问题:此方法绘制面板内容,但边框保持原样。

azmq

0 个答案:

没有答案