日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

在状态栏中插入类似进度条的可视控件

發布時間:2025/3/15 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在状态栏中插入类似进度条的可视控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,在Form中放置一個狀態條控件Status。調節Status.Panels,在其中插入3個狀態條嵌板。第二個嵌板的參數Style設置成psOwnerDraw。這一點很重要,如果沒有這樣做,將永遠無法顯示文字以外的東西。在Form1的Private部分聲明一個TRect類型的變量:StatusDrawRect:TRect;然后在狀態條的OnDrawPanel事件中插入一行:StatusDrawRect:=rect;以記錄參數Style設置成psOwnerDraw的嵌板的坐標。

??? 第二步,在Form的Private中聲明一個TProgressbar類型的成員變量Progress。然后在一個菜單的消息響應過程中調用Create方法把它建立起來,再設定狀態條為該進度條的父窗口,進而設定進度條的一些必要參數,例如:最大值、最小值、原點坐標、高度和寬度等。

程序清單:

unit Unit1;

interface

uses
??? Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
??? Dialogs, ComCtrls, Menus;

type
??? TForm1 = class(TForm)
????? Status: TStatusBar;
????? MainMenu1: TMainMenu;
????? N1: TMenuItem;
????? Create: TMenuItem;
????? Exit: TMenuItem;
????? procedure StatusDrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
????? const Rect: TRect);
????? procedure ExitClick(Sender: TObject);
????? procedure CreateClick(Sender: TObject);
??? private
????? StatusDrawRect:TRect;//記錄要插入狀態條特技的坐標范圍
????? Progress:TProgressbar;
??? public
????? { Public declarations }
? end;

var
??? Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StatusDrawPanel(StatusBar: TStatusBar;
??? Panel: TStatusPanel; const Rect: TRect);
begin
??? StatusDrawRect:=rect;//記錄要插入狀態條特技的坐標范圍
end;

procedure TForm1.ExitClick(Sender: TObject);
begin
??? Form1.Close;
end;

procedure TForm1.CreateClick(Sender: TObject);
var
??? i,count:integer;
??? staPanleWidth:Integer;
begin
??? progress:=TProgressbar.Create(form1);
??? count:=3000;//進度條的最大值
??? staPanleWidth:=status.Panels.Items[1].Width;
????//由于進度條很寬,所以需要改變狀態條嵌板的寬度,這里先保存它的寬度。
??? status.Panels.Items[1].Width:=150;//改變寬度
??? status.Repaint;
??? with progress do
??? begin
??????? top:=StatusDrawRect.Top;
??????? left:=StatusDrawRect.Left;
??????? width:=StatusDrawRect.Right-StatusDrawRect.Left;
??????? height:=StatusDrawRect.Bottom-StatusDrawRect.Top;
????????//設定進度條的寬度和高度
???????visible:=true;
?????? try
?????????? Parent:=status;//該進度條的擁有者為狀態條status
?????????? Min:=0;Max:=Count;//進度條的最大值和最小值
?????????? Step:=1;//設定進度條的步長
?????????? for i:=1 to Count do StepIt;
?????????? ShowMessage('現在,進程條將要從內存中被釋放');
??????? finally
?????????? Free;//釋放進度條
??????? end;//try
??? end;//with
??? Status.Panels.Items[1].Width:=staPanleWidth;//恢復狀態條嵌板的寬度
end;//begin

end.

類似的還可插入其他可視控件,如按鈕、位圖和動畫控件等等。

總結

以上是生活随笔為你收集整理的在状态栏中插入类似进度条的可视控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。