製作FlashGet下載風格進度條
許多知名的下載軟件中都有下載管理器,用一個TListView來顯示下載的進程,你可以清楚的看到已經下載了多少,還有多少內容仍需下載,這樣的控件,Delphi自身並未提供,但我們可以在TListView的基礎之上加入進度條控件(TProgressBar)來實現這一功能,這樣就能既能滿足我們的實際需求,又不用“犧牲”口袋裏白花花的銀子,還能增加我們對控件嵌套的認識,一箭三雕,何樂而不爲呢?
到底該怎麼做呢?讓我想想……好了讓我們先從TListView的ViewStyle屬性開始吧,這個屬性我們常用,把TListView做爲一個表格來顯示各種數據時,我們常常把這個屬性設置成vsReport,設置之後,最左邊的列(Column)包含一個小的圖標和數據,從第二列開始就是顯示一個個字段的數據,這是我們最常見的TListView的樣子,每天一打開Windows的資源管理器,我們就能看到它。(如圖一)
打開Delphi,新建一個工程,在自動生成的Form上,放置一個TListView控件,在它的Columns屬性中定義兩列,第一列放置數據項(Item),第二列用來存放Progress.(如圖二)
在Form上加入一個按鈕(Button),在按鈕的Click事件中加入如下代碼,用於在按下按鈕時,可以在TListView的第二列顯示TProgress。
添加Item的代碼如下:
procedure TForm1.AddItemButtonClick(Sender: TObject); |
上面的代碼可以實現這樣的功能:按下按鈕之後,一個Progressbar被建立,一個對Progressbar的引用被加進ListItem的Data屬性,最後,Progressbar被放置在由pbColumnIndex屬性指定的列中。
當想要將一個項(Item)從TListView中刪除,你必須先判斷添加進去的Progressbar的內存佔用是否已經被釋放,如果已經完成,就繼續。
刪除Item的代碼如下:
procedure TForm1.RemoveItemButtonClick(Sender: TObject); |
完成之後,我們來測試一下,我們拖一個TTimer控件,然後在它的OnTime事件中填入下面的代碼,模擬一下在一個真實的環境下,這個被我們美化過的TListView控件會有如何精彩表現,也讓大夥一起體會一把寫程序的小小成就感吧。(如圖三)
代碼如下:
procedure TForm1.Timer1Timer(Sender: TObject); |
就是這樣的簡單,任何有名的軟件都是由這樣的一個個小知識點構成,只要細心體會知名軟件的優勢與長處,模仿然後改進說不定你能做出比它們都棒的軟件!
開發環境: WindowsXP SP2+Delphi7
2009-11-04