实现StatusBar的Flat风格

丧门神

丧门神

2016-02-19 13:18

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的实现StatusBar的Flat风格,手机电脑控们准备好了吗?一起看过来吧!
  效果见右图,OfficeXP里就是这样的风格,其实实现很简单,不必专门在网上找别人控件。
  把StatusBar的SimplePanel设为False,点击Panels添加StatusPanel,把所有StatusPanel的Bevel设为pbNone、Style设为psOwnerDraw因为我们要自己绘制Flat风格。下面是StutasBar的OnDrawPanel事件代码:
  
  procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
    Panel: TStatusPanel; const Rect: TRect);
  var
      uAlign: UINT;
      R: TRect;
  begin
      case Panel.Alignment of
          taLeftJustify  : uAlign := DT_LEFT;
          taCenter       : uAlign := DT_CENTER;
          taRightJustify : uAlign := DT_RIGHT;
      end;
  
    uAlign := uAlign or DT_VCENTER;
      with StatusBar.Canvas do begin
          Pen.Color := $E1E1E1;
          Brush.Color := StatusBar.Color;
          Rectangle(Rect);
          Brush.Style := bsClear;
          R.Left := Rect.Left + 1;
          R.Right := Rect.Right - 1;
          R.Top := Rect.Top + 1;
          R.Bottom := Rect.Bottom - 1;
          DrawText(StatusBar.Canvas.Handle, PChar(Panel.Text), -1, R, uAlign);
      end;
  end;
  
  
  右图的界面中,第一StatusPanel应该是自动调整大小的,所以还得处理StatusBar.OnResize事件,代码如下:
  procedure TForm1.StatusBar1Resize(Sender: TObject);
  var
      i, w: integer;
  begin
      w := StatusBar1.Width;
      for i:=1 to StatusBar1.Panels.Count-1 do
          w := w - StatusBar1.Panels[i].Width;
      StatusBar1.Panels[0].Width := w;
  end;
  
  
  效果还不错吧
展开更多 50%)
分享

猜你喜欢

实现StatusBar的Flat风格

编程语言 网络编程
实现StatusBar的Flat风格

更改StatusBar为黑底绿字

编程语言 网络编程
更改StatusBar为黑底绿字

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VC编程实现IE风格的界面

编程语言 网络编程
VC编程实现IE风格的界面

怎样实现XP风格按钮

编程语言 网络编程
怎样实现XP风格按钮

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

XP风格复活节彩蛋的实现

C语言教程 C语言函数
XP风格复活节彩蛋的实现

Photoshop简单实现黑白风格照片

电脑网络
Photoshop简单实现黑白风格照片

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

VisualBasic编码

VisualBasic编码

SendMessage函数巧应用

SendMessage函数巧应用
下拉加载更多内容 ↓