delphi 在状态条中显示进度条,WebBrowser示例


本文整理自网络,侵删。

 在状态条中显示进度条,原理是在TForm1类中加progress, progressMax变量,webbrowser控件更新之,StatusBar在刷新的时候依据这两个变量画出长条状图形(即进度条)。
 
(附件是一个例子。)
 
 
 
unit Unit1;

 interface

 uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, ExtCtrls, OleCtrls, SHDocVw, StdCtrls, Buttons, ComCtrls, Math;

 type
   TForm1 = class(TForm)
     wb1: TWebBrowser;
     pnl1: TPanel;
     stat1: TStatusBar;
     lbl1: TLabel;
     btn3: TSpeedButton;
     edt1: TEdit;
     procedure btn3Click(Sender: TObject);
     procedure FormShow(Sender: TObject);
     procedure stat1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
       const Rect: TRect);
     procedure FormCreate(Sender: TObject);
     procedure wb1ProgressChange(Sender: TObject; Progress,
       ProgressMax: Integer);
     procedure edt1KeyPress(Sender: TObject; var Key: Char);
     procedure wb1StatusTextChange(Sender: TObject; const Text: WideString);
     procedure wb1TitleChange(Sender: TObject; const Text: WideString);
   private
     { Private declarations }
   public
     progress, progressMax: Integer;
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.dfm}

 procedure TForm1.btn3Click(Sender: TObject);
 begin
   wb1.Navigate(edt1.Text);
 end;

 procedure TForm1.FormShow(Sender: TObject);
 begin
   btn3.Click; //www.delphitop.com
 end;

 procedure TForm1.stat1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
   const Rect: TRect);
 var
   x:Integer;
 begin
   if Panel.Index=1 then
   begin
     with stat1.Canvas do
     begin
       Brush.Color := $00641F04;
       x := Floor((Rect.Right-Rect.Left)*progress/progressMax);
       Rectangle(Rect.Left, Rect.Top+1, Rect.Left+x, Rect.Bottom-1);
     end;
   end;
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
   progress := 0;
   progressMax := 100;
 end;

 procedure TForm1.wb1ProgressChange(Sender: TObject; Progress,
   ProgressMax: Integer);
 begin
   self.progress := Progress;
   if ProgressMax > 0 then
     self.progressMax := ProgressMax;
   stat1.Panels[2].Text := IntToStr(Floor(self.progress/self.progressMax*100)) + '%';
   stat1.Refresh;
 end;

 procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
 begin
   if Key = #13 then btn3.Click;
 end;

 procedure TForm1.wb1StatusTextChange(Sender: TObject;
   const Text: WideString);
 begin
   stat1.Panels[0].Text := Text;
 end;

 procedure TForm1.wb1TitleChange(Sender: TObject; const Text: WideString);
 begin
   Caption := Text;
   edt1.Text := wb1.LocationURL;
 end;

 end.

相关阅读 >>

Delphi 操作前,删除前,覆盖前,询问对话框

Delphi的unicode与gb2312转转换,汉字unicode转gb2312

Delphi firedac 连接sql server一些要注意的地方

Delphi读写文本文件 assignfile reset append

Delphi文件是否正在使用

Delphi image1 图像旋转90

Delphi hex 相关单元

Delphi tms web core 获取url 参数

Delphi限制edit编辑框的输入

Delphi excel操作,写了个adodataset转excel的函数

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...