在狀態列動態加進度條

2021-04-12 16:34:35 字數 1840 閱讀 6527

一般情況下,我們可以建立非模式對話方塊並在上面顯示進度條。如果能夠利用狀態條,在狀態條中動態地新增並顯示進度條,將會更加方便直觀。下面將講述如何在delphi 5中程式設計實現在狀態條中動態地新增進度條。具體的過程如下:

2.在窗體中新增乙個狀態列元件statusbar1,乙個button元件button1。在狀態列編輯器中為狀態列新增兩個顯示面板,因為後面將要在第二個面板中顯示進度條,所以將第二個面板的style屬性設定為psownerdraw。將button1元件的caption屬性設定為「演示操作」。

3.在unit1.pas檔案的tform1的型別定義中新增下面的變數定義:

......

private

progressbar:tprogressbar;// 進度條元件

progressbarrect:trect; // 進度條元件的尺寸

public

......

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.rig 璓rogressbarrect.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;  

狀態列中新增進度條

將進度條新增到狀態列中不是很困難,只要幾步就可以了 1.建立乙個form工程,在窗體上新增乙個狀態列stat,新增乙個進度條progressbar1 2.為了演示進度情況,再新增乙個timer1 3.在stat的屬性中,將showpanels設為true 4.在stat的panels屬性中新增乙個s...

Delphi程式設計中在狀態列動態新增進度條

delphi程式設計中在狀態列動態新增進度條 一般情況下,我們可以建立非模式對話方塊並在上面顯示進度條。如果能夠利用狀態條,在狀態條中動態地新增並顯示進度條,將會更加方便直觀。下面將講述如何在delphi 5中程式設計實現在狀態條中動態地新增進度條。具體的過程如下 2 在窗體中新增乙個狀態列元件st...

vs2010 狀態列新增進度條

步驟 1 在cmainframe類中定義乙個變數 保護型別.cprogressctrl m progress 2 新增indicator指示器 id indicator prog 3 新增wm paint事件,新增 如下 void cmainframe onpaint else m progress...