在状态栏中插入类似进度条的可视控件
首先,在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.
类似的还可插入其他可视控件,如按钮、位图和动画控件等等。
在状态栏中插入类似进度条的可视控件相关推荐
- 文件的上传下载功能的实现(包括进度条)[telerik控件]
文件的上传下载功能的实现(包括进度条) 1.准备工作 首先我们需要Telerik控件,数据库,上传文件文件夹. Telerik控件: RadUpload.RadProgressManager.RadP ...
- elementui 进度条怎么做_小E,Excel中这样的进度条是怎么做出来的?
我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务.支持我,也为自己加油! 前面我们分享过如何做进度条: <Excel进度条启示:专 ...
- C++ 主程序中打开子程序窗口隐藏,操作控件 遍历窗口控件句柄EnumChildWindows();获取其他程序进度条数据 操作选择框 按钮点击
1.线程启动子程序 ShowWindow(hWnd, SW_SHOW)显示 ShowWindow(hwnd, SW_HIDE);隐藏 system_hide(L"Odin3.exe&quo ...
- python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法
如下所示: from tkinter import * import time #更新进度条函数 def change_schedule(now_schedule,all_schedule): can ...
- android圆形点击效果,Android 三种方式实现自定义圆形页面加载中效果的进度条
[实例简介] Android 三种方式实现自定义圆形页面加载中效果的进度条 [实例截图] [核心代码] ad376a86-a9aa-49bc-8cea-321bcff2c0c3 └── AnimRou ...
- 想建一个带分隔条的label 控件;
想建一个带分隔条的label 控件: Delphi / Windows SDK/API http://www.delphi2007.net/DelphiBase/html/delphi_2006120 ...
- vue树形结构html,怎么在vue中利用递归组件实现一个树形控件
怎么在vue中利用递归组件实现一个树形控件 发布时间:2021-06-11 17:26:48 来源:亿速云 阅读:81 作者:Leah 本篇文章为大家展示了怎么在vue中利用递归组件实现一个树形控件, ...
- C#中如何将光标定位在某个控件中?
C#中如何将光标定位在某个控件中? 例子:当打开如下界面时,如何将光标定位在Form9界面中的用户名combox1框中? (1)首先将界面Form9事件中的shown选择Form9_Load,如下图所 ...
- Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)
原文:Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定) ------------------------------ ...
最新文章
- 本人CCNP、OCP MCSA 证书寻求挂靠
- 7.破解的最简单例子
- 和Java相关的书籍,想成为架构师的请收藏一下啊
- 第三届传智杯全国大学生IT技能大赛(决赛B组)【c++】
- Android应用程序的组成部分和Manifest文件(转)
- Ifvisible.js – 判断网页中的用户是闲置还是活动状态
- unity3d实现序列帧动画
- MyBatis学习02
- 多屏互动电脑版_手机、电脑屏幕太小怎么办?这4招秒变大屏
- fluidsim元件库下载_FluidSIM下载-液压气动仿真软件FluidSIM下载v5.6a 中文版-西西软件下载...
- python cnn 股市_荐python3绘制股票K线图的那些坑【一】mpl_finance迁向mplfinance,以及plot独立窗口视图问题!...
- 东芝打印机共享怎么设置_如何设置东芝复印机为网络共享打印机?
- 微信小程序——云开发实现图片上传到云存储并实时预览当前上传的图片
- xp系统计算机怎么连接到网络打印机,windows xp系统如何连接不同网段共享打印机...
- antd 项目中使用iconfont图标
- 如何利用COOC生成动态排名变化利器可识别的数据格式
- 前端jQuery读取本地文件内容
- 劝说语合理使用计算机,用一句名言来劝说家长让孩子接触计算机
- 产品经理必看电影:当幸福来敲门
- 以喷管雷诺数,当地大气压及射流有效温度计算所需质量流量,静温