Delphi程序?qū)崿F(xiàn)下載進(jìn)程的動(dòng)態(tài)顯示

字號(hào):

許多知名的下載軟件中都有下載管理器,用一個(gè)TListView來顯示下載的進(jìn)程,你可以清楚的看到已經(jīng)下載了多少,還有多少內(nèi)容仍需下載,這樣的控件,Delphi自身并未提供,但我們可以在TListView的基礎(chǔ)之上加入進(jìn)度條控件(TProgressBar)來實(shí)現(xiàn)這一功能,這樣就能既能滿足我們的實(shí)際需求,又不用“犧牲”口袋里白花花的銀子,還能增加我們對(duì)控件嵌套的認(rèn)識(shí),一箭三雕,何樂而不為呢?
    到底該怎么做呢?讓我想想……好了讓我們先從TListView的ViewStyle屬性開始吧,這個(gè)屬性我們常用,把TListView做為一個(gè)表格來顯示各種數(shù)據(jù)時(shí),我們常常把這個(gè)屬性設(shè)置成vsReport,設(shè)置之后,最左邊的列(Column)包含一個(gè)小的圖標(biāo)和數(shù)據(jù),從第二列開始就是顯示一個(gè)個(gè)字段的數(shù)據(jù),這是我們最常見的TListView的樣子,每天一打開Windows的資源管理器,我們就能看到它。
    打開Delphi,新建一個(gè)工程,在自動(dòng)生成的Form上,放置一個(gè)TListView控件,在它的Columns屬性中定義兩列,第一列放置數(shù)據(jù)項(xiàng)(Item),第二列用來存放Progress.
    在Form上加入一個(gè)按鈕(Button),在按鈕的Click事件中加入如下代碼,用于在按下按鈕時(shí),可以在TListView的第二列顯示TProgress。添加Item的代碼如下:
    procedure TForm1.AddItemButtonClick(Sender: TObject);
    const
    PBColumnIndex = 1;
    pbMax = 100;
    var
    li : TListItem;
    lv : TListView;
    pb : TProgressBar;
    pbRect : TRect;
    begin
    lv := ListViewEx1;
    //建立一個(gè)新的ListItem
    li := lv.Items.Add;
    li.Caption := ’Item ’ + IntToStr(lv.Items.Count);
    //建立一個(gè)ProgressBar,置入TListView的第二列中
    pb := TProgressBar.Create(nil);
    pb.Parent := lv;
    li.Data := pb;
    pbRect := li.DisplayRect(drBounds);
    pbRect.Left := pbRect.Left +
    lv.Columns[-1 + pbColumnIndex].Width;
    pbRect.Right := pbRect.Left +
    lv.Columns[pbColumnIndex].Width;
    pb.BoundsRect := pbRect;
    end; //添加ItemButton事件