最近我学做了一个web浏览器.但我不知道好何在状态条中显示进度条?

解决方案 »

  1.   

    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    begin
    progressbar1.Parent:=statusbar1;
    progressbar1.BoundsRect:=rect
    end;
      

  2.   

    注意:设置把某一Panel的style:=psOwnerDraw;
      

  3.   

    procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress,
      ProgressMax: Integer);
    begin
      progressBar1.Max:=ProgressMax;
      ProgressBar1.Position:=Progress;
    end;
      

  4.   

    在U n i t 1 . p a s文件的T F o r m 1的类型定义中添加下面的变量:
    . . .
    p r i v a t e
    { Private declarations }
    P r o g r e s s B a r : T P r o g r e s s B a r ; // 进度条组件
    ProgressBarRect:TRect; // 进度条组件的尺寸
    p u b l i c
    . . .加S t a t u s B a r 1组件的O n D r a w P a n e l事件的处理过程如下:
    procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
    Panel: TStatusPanel; const Rect: TRect);
    b e g i n
    P r o g r e s s B a r R e c t : = R e c t ;
    e n d ;添加B u t t o n 1组件的O n C l i c k事件的处理过程如下:
    procedure TForm1.Button1Click(Sender: TO b j e c t ) ;
    v a r
    i , S t e p C o u n t : i n t e g e r ;
    b e g i n
    P r o g r e s s B a r : = T P r o g r e s s B a r. C r e a t e ( F o r m 1 ) ;
    StepCount:=5000; // 进度条的最大步长
    with ProgressBar do
    b e g i n
    / /设定进度条的位置、宽度和高度
    To p : = P r o g r e s s B a r R e c t . To p ;
    L e f t : = P r o g r e s s B a r R e c t . L e f t ;
    Wi d t h : = P r o g r e s s B a r R e c t . R i g h t - P r o g r e s s B a r R e c t . L e f t ;
    H e i g h t : = P r o g r e s s B a r R e c t . B o t t o m - P r o g r e s s B a r R e c t . Top;
    Vi s i b l e : = True; // 显示进度条
    t r y
    Parent := StatusBar1; // 进度条的父级Min := 0; // 最小值
    Max := StepCount; // 最大值
    Step := 1; // 步长
    for i := 1 to StepCount do Stepit; // 累加进度条
    M e s s a g e D l g ( '已经成功地保存了文件。', mtInformation, [mbOK],0);
    f i n a l l y
    Free; / /释放进度条的资源
    e n d ;
    e n d ;
    e n d ;
      

  5.   

    楼主,能否把你的浏览器原代码发给我
    [email protected]
    谢谢
      

  6.   

    楼主,能否也把你的浏览器原代码发给我
    [email protected]
    谢谢
      

  7.   

    重载一个新的TStatusBarNew控件
    只是增加Include(TStatusBar.ControlStyle, [csAcceptsControls])
    然后就可以在StatusBar上放任何东西了.
      

  8.   

    1.在Delphi 8中通过菜单“File/New Application”创建一个新的工程。
    2.在窗体中添加一个状态栏组件StatusBar1,一个Button组件Button1。在状态栏编辑器中为状态栏添加两个显示面板,因为后面将要在第二个面板中显示进度条,所以将第二个面板的Style属性设置为psOwnerDraw。将Button1组件的Caption属性设置为“演示操作”。
    3.在Unit1.pas文件的TForm1的类型定义中添加下面的变量定义:
      ......
      private
      { Private declarations } 
      progressBar:TProgressBar;// 进度条组件 
      progressBarRect:TRect; // 进度条组件的尺寸
      public
      { Public declarations }
      ......
    4.在状态栏的OnDrawPanel事件的处理过程中,获取将Style属性设置为psOwnerDraw的面板的尺寸。添加StatusBar1组件的OnDrawPanel事件的处理过程如下:
      procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; 
      Panel: TStatusPanel; const Rect: TRect);
      begin 
      // 进度条组件的尺寸设定为状态条中的第二个显示面板的尺寸,因为该面板的Style属性已被设置为
      psOwnerDraw 
      progressBarRect:=Rect;
      end; 
    5.在按下按钮Button1组件时将执行一个模拟计算过程的循环操作,同时动态地在StatusBar1的第二个面板中创建并显示ProgressBar组件,并将其父级设置为StatusBar1组件。添加Button1组件的OnClick事件的处理过程如下:
      procedure TForm1.Button1Click(Sender: TObject); 
      var
      // I为循环变量, StepCount为执行循环的总数目
      I,StepCount : Integer;
      begin
      //动态创建进度条组件progressBar 
      progressBar:=TProgressBar.Create(Form1); 
      StepCount:=10000; // 循环的总数目
      with progressBar do 
      begin 
      // 先确定进度条组件的尺寸和位置
      Top:=ProgressBarRect.Top; 
      Left:=ProgressBarRect.Left;
      Width:=ProgressBarRect.Right-ProgressBarRect.Left; 
      Height:=ProgressBarRect.Bottom-ProgressBarRect.Top; 
      Visible:=True; // 使进度条可见 
      try 
      Parent:=StatusBar1; // parent属性设置为状态栏组件 
      Min:=0;// 设定进度条的范围和步长 
      Max:=StepCount; 
      Step:=1;
      for I:=1 to StepCount do 
      begin 
      Stepit;// 循环使进度显示条累加 
      end; 
      MessageDlg(′演示操作已经完成!′, mtInformation, [mbOK], 0);
      finally 
      Free;// 最后释放进度条组件占用的资源 
      end;
      end;
      end; 
      通过这种方法我们就可以在状态条中动态地添加进度条,同样的原理还用于在状态栏中添加其他的组件,过程基本一致。
      

  9.   

    我也想要源代码
    [email protected]
      

  10.   

    重载一个新的ProgressBar1控件,假设命名为 PBar 则
    procedure TALBarCodePrint.BOKClick(Sender: TObject);
    Var
      i:integer;
    begin
         i:=0;
         PBar.Min:=0;
         PBar.Max:=TBarCode.RecordCount;
         PBar.Position:=i;
         TBarCode.First;
         while not TBarCode.eof do
          begin
           ......
           ......
           i:=i+1;
           PBar.Position:=i;
           TBarCode.Next;
          end;
    end;
      

  11.   

    现在居然有DELPHI8了????????????????
    我真是孤陋寡闻啊,不知道比7有什么改进啊!!!!!
      

  12.   

    偶也要源码撒~~~
    [email protected]
    谢谢!!!