StatusBar.panel[1].text:='你要的文字.

解决方案 »

  1.   

    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    begin
      case Panel.Index of
        0,2:begin               //这边是2吧!?
              StatusBar.Canvas.Font.Color :=clred;
              StatusBar.Canvas.TextOut(Rect.Top,Rect.left,'ABCDEFG');
          end;
        3:begin
          end;
      end;
    end;
      

  2.   

    用label就可以了,把label字体变成red,写上你要显示的字
    然后指定label的parent为panels好象是这样,具体记不清楚了
      

  3.   

    用label是可以,但是不好画。
    偶怎么画画都觉得不好看。
    还有,为什么panel[0]就可以,而其他index>0的就不行呢?
    困惑啊困惑
      

  4.   

    case没什么问题,我只不过随手写的
      

  5.   

    statusBar属性值增加,panel[n],n>=0
      

  6.   

    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    var
      vBitmap: TBitmap;
    begin
      vBitmap := TBitmap.Create;
      try
        vBitmap.Width := Rect.Right - Rect.Left;
        vBitmap.Height := Rect.Bottom - Rect.Top;
        vBitmap.Canvas.Font := StatusBar.Canvas.Font;
        vBitmap.Canvas.Brush := StatusBar.Canvas.Brush;
        vBitmap.Canvas.FillRect(Classes.Rect(0, 0, vBitmap.Width, vBitmap.Height));
        if Panel.Index in [0, 3] then vBitmap.Canvas.Font.Color := clRed;
        vBitmap.Canvas.TextOut(1, 1, Panel.Text);
        StatusBar.Canvas.Draw(Rect.Left, Rect.Top, vBitmap);
      finally
        vBitmap.Free;
      end;
    end;
      

  7.   

    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    var
      vBitmap: TBitmap;
    begin
      vBitmap := TBitmap.Create;
      try
        vBitmap.Width := Rect.Right - Rect.Left;
        vBitmap.Height := Rect.Bottom - Rect.Top;
        vBitmap.Canvas.Font := StatusBar.Canvas.Font;
        vBitmap.Canvas.Brush := StatusBar.Canvas.Brush;
        vBitmap.Canvas.FillRect(Classes.Rect(0, 0, vBitmap.Width, vBitmap.Height));
        if Panel.Index in [0, 3] then vBitmap.Canvas.Font.Color := clRed;
        vBitmap.Canvas.TextOut(1, 1, Panel.Text);
        StatusBar.Canvas.Draw(Rect.Left, Rect.Top, vBitmap);
      finally
        vBitmap.Free;
      end;
    end;
      

  8.   

    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    var
      vBitmap: TBitmap;
    begin
      vBitmap := TBitmap.Create;
      try
        vBitmap.Width := Rect.Right - Rect.Left;
        vBitmap.Height := Rect.Bottom - Rect.Top;
        vBitmap.Canvas.Font := StatusBar.Canvas.Font;
        vBitmap.Canvas.Brush := StatusBar.Canvas.Brush;
        vBitmap.Canvas.FillRect(Classes.Rect(0, 0, vBitmap.Width, vBitmap.Height));
        if Panel.Index in [0, 3] then vBitmap.Canvas.Font.Color := clRed;
        vBitmap.Canvas.TextOut(1, 1, Panel.Text);
        StatusBar.Canvas.Draw(Rect.Left, Rect.Top, vBitmap);
      finally
        vBitmap.Free;
      end;
    end;
      

  9.   

    现在是为什么panels[0]可以改变,而panels[1..n]却不行。
    大家给个答案
      

  10.   

    还有,用label,bitmap等等我都知道确实可行