在狀態列中插入類似進度條的可視控制元件
首先,在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;//beginend.
類似的還可插入其他可視控制元件,如按鈕、點陣圖和動畫控制元件等等。
相關文章
- 短視訊平臺開發,畫面靜置時隱藏狀態列、導航欄、進度條
- flutter seekbar 可拖拽可點選的進度條Flutter
- [譯] 5 分鐘讓 Drawer 在狀態列下可見
- 自定義圓形進度條控制元件控制元件
- React Native 中的狀態列React Native
- WPF中實現彈出進度條視窗
- 進度條和列表形式顯示的控制元件控制元件
- Python 輸出命令列進度條Python命令列
- android判斷狀態列是否可見Android
- Android 自定義 View:包含多種狀態的下載用圓形進度條AndroidView
- 【新特性速遞】進度條,進度條,進度條
- [Rpackage]R語言plyr包使用方法——可進行類似資料透視表的操作PackageR語言
- 如何檢視CATIA許可證狀態
- 在命令列上輸出進度條的原理命令列
- 在Linux中,如何檢視網路介面的狀態?Linux
- JavaScript 動態進度條效果詳解JavaScript
- 狀態列
- 直播系統開發,實現在進度條中顯示文字顯示進度
- Mybatis如何動態生成插入的列及批次插入值MyBatis
- 深度解析:在 React 中實現類似 Vue 的 KeepAlive 元件ReactVue元件
- 在鴻蒙中實現類似瀑布流效果鴻蒙
- geoserver控制服務訪問許可權-類似百度地圖的keyServer訪問許可權地圖
- JavaScript百分比動態進度條JavaScript
- 如何直觀的在JavaScript中管理狀態JavaScript
- 類似dreamweaver在VSCode實現網頁製作的靜態CMS:Front MatterVSCode網頁
- 可拖拽圓形進度條元件(支援移動端)元件
- 【架構設計】無狀態狀態機在程式碼中的實踐架構
- VSCode中類似Postman的外掛VSCodePostman
- Qt 進度條QT
- 在Linux中,程序狀態有哪些?Linux
- 短視訊商城系統,Android進度條,自定義進度條,顯示百分比Android
- C# 根據BackgroundWoker非同步模型和ProgressBar控制元件,自定義進度條控制元件C#非同步模型控制元件
- 沉浸式狀態列
- 狀態列相關
- Android 狀態列透明Android
- guzzlehttp/guzzle 配合 symfony/console 命令列中實現檔案下載進度條HTTP命令列
- win10中word怎麼切換改寫狀態_win10怎樣切換插入狀態和改寫狀態Win10
- Excel實現完成進度的進度條結果Excel
- 用 jQuery 和 Bootstrap 在 WordPress 中新增進度條jQueryboot