📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, clDC, clMultiDC, ExtCtrls, ComCtrls, CommCtrl, clProgressBar,
Buttons, clSingleDC, clDownLoader;
type
TForm1 = class(TForm)
btnOne: TButton;
btnTwo: TButton;
btnThree: TButton;
btnInit: TButton;
ListView: TListView;
clProgressBar1: TclProgressBar;
clProgressBar2: TclProgressBar;
clProgressBar3: TclProgressBar;
clProgressBar4: TclProgressBar;
clProgressBar5: TclProgressBar;
clListViewProgressBar1: TclProgressBar;
clListViewProgressBar2: TclProgressBar;
clListViewProgressBar3: TclProgressBar;
clDownLoader: TclDownLoader;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Bevel1: TBevel;
Bevel2: TBevel;
procedure FormCreate(Sender: TObject);
procedure btnInitClick(Sender: TObject);
procedure btnOneClick(Sender: TObject);
procedure btnTwoClick(Sender: TObject);
procedure btnThreeClick(Sender: TObject);
procedure ListViewCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
procedure clListViewProgressBar1Changed(Sender: TObject);
private
function ResourceState: TclResourceStateList;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
btnInitClick(nil);
end;
function TForm1.ResourceState: TclResourceStateList;
begin
Result := clDownLoader.ResourceState;
end;
procedure TForm1.btnInitClick(Sender: TObject);
begin
{
We emulate resource state changing
just like it occurs during the downloading process begins
}
ResourceState.Clear();
ResourceState.Init(5, 5000);
end;
procedure TForm1.btnOneClick(Sender: TObject);
begin
{
We emulate resource state changing
just like it occurs during the downloading process goes
}
ResourceState.UpdateProceed(ResourceState[0], 120);
ResourceState.UpdateProceed(ResourceState[1], 100);
ResourceState.UpdateProceed(ResourceState[2], 50);
ResourceState.UpdateProceed(ResourceState[3], 200);
ResourceState.UpdateProceed(ResourceState[4], 130);
ResourceState.UpdateStatus(ResourceState[0], psProcess);
ResourceState.UpdateStatus(ResourceState[1], psErrors);
ResourceState.UpdateStatus(ResourceState[3], psFailed);
end;
procedure TForm1.btnTwoClick(Sender: TObject);
begin
{
We emulate resource state changing
just like it occurs during the downloading process goes
}
ResourceState.UpdateProceed(ResourceState[0], 600);
ResourceState.UpdateProceed(ResourceState[1], 340);
ResourceState.UpdateProceed(ResourceState[2], 500);
ResourceState.UpdateProceed(ResourceState[3], 800);
ResourceState.UpdateProceed(ResourceState[4], 250);
end;
procedure TForm1.btnThreeClick(Sender: TObject);
begin
{
We emulate resource state changing
just like it occurs during the downloading process done
}
ResourceState.UpdateProceed(ResourceState[0], 1000);
ResourceState.UpdateProceed(ResourceState[1], 1000);
ResourceState.UpdateProceed(ResourceState[2], 1000);
ResourceState.UpdateProceed(ResourceState[3], 1000);
ResourceState.UpdateProceed(ResourceState[4], 1000);
end;
procedure TForm1.ListViewCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
var DefaultDraw: Boolean);
var
R: TRect;
begin
if not ((Item.Index in [0, 2, 4]) and (SubItem = 1)) then Exit;
ListView_GetSubItemRect(Item.Handle, Item.Index, SubItem, LVIR_BOUNDS, @R);
case Item.Index of
0: clListViewProgressBar1.Draw(ResourceState, Sender.Canvas, R);
2: clListViewProgressBar2.Draw(ResourceState, Sender.Canvas, R);
4: clListViewProgressBar3.Draw(ResourceState, Sender.Canvas, R);
end;
DefaultDraw := False;
end;
procedure TForm1.clListViewProgressBar1Changed(Sender: TObject);
var
R: TRect;
begin
ListView_GetSubItemRect(ListView.Handle, 0, 1, LVIR_BOUNDS, @R);
InvalidateRect(ListView.Handle, @R, False);
ListView_GetSubItemRect(ListView.Handle, 2, 1, LVIR_BOUNDS, @R);
InvalidateRect(ListView.Handle, @R, False);
ListView_GetSubItemRect(ListView.Handle, 4, 1, LVIR_BOUNDS, @R);
InvalidateRect(ListView.Handle, @R, False);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -