我想把一个显示进度的组件(ProgressBar)放入状态栏中,并且在需要时让ProgressBar可见,平时不可见。可有办法,最好把码贴出来。

解决方案 »

  1.   

    var
    progressbar2:tprogressbar;
    ........  progressbar2:=tprogressbar.Create(self);
      progressbar2.Parent:=statusbar1;
      progressbar2.Top:=5;
      progressbar2.left:=5;控制是否可见用progressbar2.visible
      

  2.   

    在状态条的事件中写
    procedure TC_ViewFM.C_StatusBarDrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    begin
      if progressbar2.Visible then
      begin
        progressbar2.Parent :=C_StatusBar;
        progressbar2.Left := Rect.Left;
        progressbar2.Height := 17;
        progressbar2.Top := Rect.Top-1;;
      end;
    end;
      

  3.   

    先在状态条添加一项,设置这一项的Style 的属性为 psOwnerDraw
      

  4.   

    在状态条中显示进度条  
    fqcxjcdm
    摘 要:
    关键字:状态条,进度条
    类 别:API
     
     
    有时我们在进行循环操作时往往要用一个进度条来指示进度,如果此时窗体上的组件较多,进度条的位置往往不好安排,在窗体底部的状态条中显示则是一个较好的办法。代码如下:
    一.首先声名几个全局变量:
    PrgBar: TProgressBar;二.在窗体的OnCreate事件中写入代码:
     PrgBar:= TProgressBar.Create(Form1);
    三.在状态条的OnDrawPanel事件中写入以下代码;
    procedure TFormywsj.StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    begin
      Panel:= StatusBar1.Panels[2];//假定进度条显示在状态条的第三个Panel中
      with PrgBar do
      begin
        Top:= Rect.Top;
        Left:= Rect.Left;
        Width:= Rect.Right- Rect.Left;
        Height:= Rect.Bottom- Rect.Top;
        Visible:= True;
        Parent:= StatusBar1;
        Min := 0;
        Max := DM1.cdsYwsh.RecordCount;
        Step:= 1;
      end;
    end;
    当需要进行循环操作时,只需对PrgBar变量的相关属性进行赋值即可。
      

  5.   

    TC_ViewFM.C_StatusBarDrawPanel,这是一个什么事件啊?在什么情况下会触发这个事件?
      

  6.   

    StatusBar的自画事件,当StatusBar需要重绘时触发。
      

  7.   

    那StatusBar什么情况需要重绘呢?