⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 079.htm

📁 Delphi书籍--Delphi网上教程
💻 HTM
字号:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI专题文档-程序应用-->状态条插入可视控件</TITLE>
<META NAME="keywords" CONTENT=" DELPHI专题文档-程序应用 状态条插入可视控件">
<META NAME="description" CONTENT=" - DELPHI专题文档-程序应用 - 状态条插入可视控件">

<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋体"}
.tt2 {font: 12pt/15pt "宋体"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<a href="index6.html">返回</a>

<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>

<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷体_GB2312">状态条插入可视控件</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p class="tt2">  首先,在FROM中放置一个状态条控件Status。调节Status.Panels,在其中插入3个状态条嵌板。把第二个嵌板的参数Style设置成psOwnerDraw。这一点很重要,如果没有这样做,将永远无法显示文字以外的东西。然后在状态条的OnDrawPanel事件中插入一行StatusDrawRect:=rect;以记录参数Style设置成psOwnerDraw的嵌板的坐标。<br>
  第二步,在FROM的Private中申明一个TProgressBar类型的变量Progress。然后在一个菜单的消息响应过程中调用Create方法把它建立起来,再设定状态条为该进程条的父窗口,进而设定进程条的一些必要参数。例如:最大值、最小值、原点坐标、高度和宽度等。<br>
  最后编译一下该程序,你就会发现在状态条中被插入了一个运动着的进程条。<br>
  类似地,你还可以在状态条中插入其他可视控件,如:按键、位图和动画控件等等。<br>
以下是范例程序:<br>
type<br>
TForm1 = class(TForm)//定义一个窗口类<br> 
Status: TStatusBar;<br> 
MainMenu1: TMainMenu;<br> 
file1: TMenuItem;<br> 
insertprocressbar1: TMenuItem;<br> 
N1: TMenuItem;<br> 
exit1: TMenuItem;<br> 
procedure FormCreate(Sender: TObject);<br> 
procedure StatusDrawPanel(StatusBar: TStatusBar; Panel: <br> 
TStatusPanel;const Rect: TRect);<br> 
procedure FormDestroy(Sender: TObject);<br> 
procedure exit1Click(Sender: TObject);<br> 
procedure insertprocressbar1Click(Sender: TObject);<br> 
private<br> 
colorindex : integer; BookOpen:Boolean;<br> 
ssbmp:Tbitmap; progress:TProgressbar;<br> 
StatusDrawRect:TRect; //记录要插入状态条特技的坐标范围<br> 
public<br> 
{ Public declarations }<br> 
end; <br> 
<br> 
var<br> 
Form1: TForm1; <br> 
<br> 
implementation <br> 
<br> 
{$R *.DFM} <br> 
<br> 
procedure TForm1.FormCreate(Sender: TObject);<br> 
begin<br> 
end; <br> 
<br> 
procedure TForm1.StatusDrawPanel(StatusBar: TStatusBar;<br> 
Panel: TStatusPanel; const Rect: TRect);<br> 
begin<br> 
StatusDrawRect:=rect; //记录要实现状态条特技的坐标范围<br> 
end;<br> 
<br> 
procedure TForm1.exit1Click(Sender: TObject);<br> 
begin<br> 
close;<br> 
end; <br> 
<br> 
procedure TForm1.insertprocressbar1Click(Sender: TObject);<br> 
var i,count:integer;<br> 
staPanleWidth:integer;<br> 
begin<br> 
progress:=TProgressbar.create(form1);<br> 
count:=3000; //进程条的最大值<br> 
staPanleWidth:=status.Panels.Items[2].width; <br> 
//由于进程条的很宽,所以需要改变状态条嵌板的宽度,这里先保存它的宽度。<br> 
status.Panels.Items[2].width:=150; // 改变宽度<br> 
status.repaint;<br> 
with progress do<br> 
begin<br> 
top:=StatusDrawRect.top;<br> 
left:=StatusDrawRect.left;<br> 
width:=StatusDrawRect.right-StatusDrawRect.left;<br> 
height:=StatusDrawRect.bottom-StatusDrawRect.top; <br> 
//设定进程条的宽度和高度<br> 
visible:=true;<br> 
try<br> 
Parent := status; //该进程条的拥有者为状态条status<br> 
Min := 0; Max := Count; //进程条的最大和最小值<br> 
Step := 1; //进程条的步长<br> 
for i := 1 to Count do<br> 
Stepit; // 累加进程条<br> 
ShowMessage('现在,进程条将要从内存中被释放');<br> 
finally<br> 
Free; //释放进程条<br> 
end; //try<br> 
end; //with<br> 
status.Panels.Items[2].width:=staPanleWidth; //恢复状态条嵌板的宽度<br> 
end; //begin <br> 
<br> 
end. </p> 
<hr color="#EE9B73" size="1" width="94%"> 
 
</TD> 
 
</TR> 
</table> 
</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -