?? 064.htm
字號(hào):
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->DELPHI專題文檔-程序應(yīng)用-->狀態(tài)條插入可視控件</TITLE>
<META NAME="keywords" CONTENT=" DELPHI專題文檔-程序應(yīng)用 狀態(tài)條插入可視控件">
<META NAME="description" CONTENT=" - DELPHI專題文檔-程序應(yīng)用 - 狀態(tài)條插入可視控件">
<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">狀態(tài)條插入可視控件</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
<p class="tt2">首先,在FROM中放置一個(gè)狀態(tài)條控件Status。調(diào)節(jié)Status.Panels,在其中插入3個(gè)狀態(tài)條嵌板。把第二個(gè)嵌板的參數(shù)Style設(shè)置成psOwnerDraw。這一點(diǎn)很重要,如果沒有這樣做,將永遠(yuǎn)無法顯示文字以外的東西。然后在狀態(tài)條的OnDrawPanel事件中插入一行StatusDrawRect:=rect;以記錄參數(shù)Style設(shè)置成psOwnerDraw的嵌板的坐標(biāo)。<br>
第二步,在FROM的Private中申明一個(gè)TProgressBar類型的變量Progress。然后在一個(gè)菜單的消息響應(yīng)過程中調(diào)用Create方法把它建立起來,再設(shè)定狀態(tài)條為該進(jìn)程條的父窗口,進(jìn)而設(shè)定進(jìn)程條的一些必要參數(shù)。例如:最大值、最小值、原點(diǎn)坐標(biāo)、高度和寬度等。<br>
最后編譯一下該程序,你就會(huì)發(fā)現(xiàn)在狀態(tài)條中被插入了一個(gè)運(yùn)動(dòng)著的進(jìn)程條。<br>
類似地,你還可以在狀態(tài)條中插入其他可視控件,如:按鍵、位圖和動(dòng)畫控件等等。<br>
以下是范例程序:<br>
type<br>
TForm1 = class(TForm)//定義一個(gè)窗口類<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; //記錄要插入狀態(tài)條特技的坐標(biāo)范圍<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; //記錄要實(shí)現(xiàn)狀態(tài)條特技的坐標(biāo)范圍<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; //進(jìn)程條的最大值<br>
staPanleWidth:=status.Panels.Items[2].width; <br>
//由于進(jìn)程條的很寬,所以需要改變狀態(tài)條嵌板的寬度,這里先保存它的寬度。<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>
//設(shè)定進(jìn)程條的寬度和高度<br>
visible:=true;<br>
try<br>
Parent := status; //該進(jìn)程條的擁有者為狀態(tài)條status<br>
Min := 0; Max := Count; //進(jìn)程條的最大和最小值<br>
Step := 1; //進(jìn)程條的步長(zhǎng)<br>
for i := 1 to Count do<br>
Stepit; // 累加進(jìn)程條<br>
ShowMessage('現(xiàn)在,進(jìn)程條將要從內(nèi)存中被釋放');<br>
finally<br>
Free; //釋放進(jìn)程條<br>
end; //try<br>
end; //with<br>
status.Panels.Items[2].width:=staPanleWidth; //恢復(fù)狀態(tài)條嵌板的寬度<br>
end; //begin <br>
<br>
end. </p>
<hr color="#EE9B73" size="1" width="94%">
</TD>
</TR>
</table>
</BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -