解决方案 »

  1.   

    最可恨的是没有Font属性(PS.我用的是Lazarus,但和Delphi基本上是一样的)!
      

  2.   

    看看你的TStatusBar事件面板中有啥与Draw、Paint相关的事件,自己画
      

  3.   

    我没有装Lazarus也不熟悉Lazarus,只能给你思路。
    至于什么汉子英文,对于系统来说都是画(draw)的
      

  4.   

    大神我的TStatusBar事件中没有相关的Draw事件,除此之外,还有其它的方法吗?
      

  5.   


    还有汉字我怎么画啊?
    不好意思,刚才没注意看,原来有OnDrawPanel事件,我来试一下,看行不行啊!!
      

  6.   


    大神这是它的OnDrawPanel事件,完全不知道怎么搞啊,还请明示!!
    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    beginend; 
      

  7.   

    假设你给StatusBar1添加了2个panel,并给每个panel的text设置了内容,
    然后给你需要自绘的panle的属性面板中把style属性设置为psOwnerDraw,然后就可以在StatusBar的OnDrawPanel事件中以你喜欢的方式绘制文字procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
      const Rect: TRect);
    begin
      with StatusBar.Canvas do
      begin
        case Panel.ID of
          0: // 第1个panel
            begin
              // 设置字体颜色
              Font.Color := clMaroon;
            end;
          1: // 第2个panel
            begin
              // 设置字体颜色
              Font.Color := clMaroon;
            end;
          //N:.... 第N个panel
        end;
        // 绘制文字
        TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text);
      end;
    end;
      

  8.   


    谢谢大神,我也搞好了!之前我在纠结const Rect : TRect这个形参我要怎么给实参,还以为TStatusBar中有这个属性,结果还是自己定义了一个TRect类型的变量,再传过去的,不知道是不是这样做的?
      

  9.   


    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
      const Rect: TRect);
    begin
      with StatusBar.Canvas do
      begin
        case Panel.ID of
          0:
            begin
              Brush.Color := clYellow; // 黄色画刷
              FillRect(Rect); // 画背景          Font.Color := clMaroon; // 设置颜色
              Font.Style := [fsBold]; // 粗体style
              // 绘制文字
              TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text);
            end;
          1:
            begin
              // 设置字体颜色
              Brush.Color := clBlack; // 黑色画刷
              FillRect(Rect); // 画背景          Font.Color := clWhite; // 设置颜色
              Font.Style := [fsBold, fsItalic]; // 粗体+斜体style
              // 绘制文字, 这里可以修改原来的文字
              TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text + '(我是动态追加的文字)');
            end;
          // 自后一个panel不处理,保持原样
        end;
      end;
    end;
      

  10.   

    StatusBar1DrawPanel 事件的参数中已经给你提供了Rect