实现StatusBar的Flat风格

2016-02-19 13:18 1 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的实现StatusBar的Flat风格,手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - 编程语言 】

  效果见右图,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;
  
  
  效果还不错吧

来源:https://www.tulaoshi.com/n/20160219/1603713.html

延伸阅读
标签: Web开发
用W3C标准建造的网站,从理论上来说可以做到完全的表现与结构相分离。打个比方,就是可以在不动骨架(结构,XHMTL)和肌肉(行为,Javascript)的前提下,彻彻底底地换一身皮(表现,CSS)。 当然,换皮之前你需要先按W3C标准建好你的网站,并且为它准备两套表现不一样的CSS。“换皮”实质上就是“换CSS”,我们要做的,只是用某种方...
VC学习笔记之一:怎样实现XP风格按钮 作者: wanghero 下载本文示例源代码 示例代码运行效果图 在vc6下面怎样实现具有xp风格的按钮?我这里介绍一种简单的方法。 我们需要用到两个类,一个是CButtonST,另一个是CWinXpButtonST.这两个类一个是按钮类,另一个是Xp风格按钮类...
标签: ASP
          上一次,我们谈到在ASP中如何利用“正则表达式”对象来实现各种数据的校验,文中描述了正则表达式对象的强大功能,接下来,我们来看看有关“正则表达式”对象的其他功能。当我们在网上冲浪的时候,尤其是浏览各类论坛的时候,经常会见到“UBB代码”这个词语。什么是UBB代码呢?UBB...
标签: ASP
  批量录入在数据库的应用中比较广泛的,关于批量录入的方法也有好多种。 下面我就结合我实际中的应用,谈一下儿我是怎么实现的。 主要用到的是form的集合的概念,通过循环取的所有的集合内数据。 考虑到大家看着方便,我把它集成到了一个页面。 下面是具体的代码: batchInput.asp <% '##################################### 'File F...
代码如下: #includeiostream  #include assert.h  using namespace std;  void myStrcpy(char* Dest, const char *Src)  {      assert((Dest!= NULL)&&(Src!=NULL));      while((*Dest = *Src)!='\0')      {        ...

经验教程

552

收藏

20
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部