📄 show_form.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>在Delphi编程中创建一个启动闪现窗口</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p align="center"><big><big>在Delphi编程中创建一个启动闪现窗口</big></big><br>
江西省统计局计算中心 曾轶雄</p>
<p><br>
通常写得好的Windows程序显示一个启动提示或封面,也叫做闪现窗口。<br>
由于工程本身创建了程序的主窗口,一般情况下主窗口最先出现,
那么闪现<br>
窗口如何出现在主窗口之前。<br>
如果我们将主窗口的可视(Visible)属性设置为假,于工程启动时,是否能<br>
将主窗口暂时隐藏起来,以使闪现屏幕最先出现呢?答案是不能。
因为应用程序<br>
自动在适当时候,使Form可视。(注:当一个Form用做子窗口或对话框,
不需要<br>
它们时,可视(Visible)属性设为假,可隐藏起Form。)<br>
那么我们怎么解决这个问题呢?有以下两种方法:<br>
方法一:调用Showmodal函数来实现。Showmodal方式使一个窗口为激活窗口,
和<br>
Show相似,但它令窗口模式化。现举一例说明:<br>
⒈开始一个新工程。给表格起名为MainForm,MainForm的单元起名为Main,
工程文<br>
件起名为Test。<br>
⒉在MainForm中插入一个Button部件,将其Caption属性设为“关闭”,为该部件<br>
的OnClick事件创建一个过程,并在过程的begin和end之间插入Close语句。<br>
⒊在应用程序添加一个表格,将这个表格起名为MoveForm,MoveForm
的单元起名<br>
为Move。<br>
⒋为便于演示,在MoveForm中插入一个Label部件,设置其Caption
属性为“欢迎<br>
进入本系统”。<br>
⒌建立两个表格之间的关联。在Unit Main的 implementation 中加入语句 uses<br>
move;<br>
再为MainForm创建OnActivate事件。<br>
procedure TMainForm.FormActivate(sender:TObject);<br>
begin<br>
MoveForm.Showmodal;<br>
end;<br>
⒍从Component模板的System类别中选择一个计时器(Timer),添加入
MoveForm<br>
表格中,设置其Interval属性为3000(可根据需要自定义),再为其OnTimer事件<br>
添加语句<br>
close;<br>
加入一个Timer部件目的是用以控制闪现窗口显示时间。在此, MoveForm显示了3<br>
秒钟后关闭,主窗口MainForm自动被激活。<br>
⒎编译、运行程序,就能得到延迟为3秒的闪现窗口。<br>
方法二:你可通过修改工程文件中的源代码来实现,这在Delphi
的编程中是很少<br>
见的。现举一例具体说明:<br>
前四步同方法一。<br>
⒌选择View/Project Manager,击Option按钮,选择结果Project Option 对话底<br>
部的Forms页栏目。注意,MainForm和MoveForm是在Auto-create forms 列表中。<br>
选择MoveForm并击右键头按钮,把这个表格移到 Available forms 。 所有的<br>
Delphi表格通过缺省方式自动在内存中建立,
因此它们要消耗内存和系统资源。<br>
在类似这里(程序运行时创建一个表格)的情况下,
你应该将表格从自动创建列<br>
表格中去掉。<br>
⒍下一步修改工程的源代码。选择View/Project Source,修改begin和end之间的<br>
语句如下:<br>
程序清单Test.Dpr<br>
program Test<br>
uses<br>
forms,<br>
Main in 'MAIN.PAS'{MainForm},<br>
Move in 'Move.PAS'{MoveForm}<br>
<br>
{$R *.RES}<br>
<br>
begin<br>
MoveForm:=TMoveForm.Create(Application);{Create创建闪现窗口对象}<br>
MoveForm.Show;<br>
MoveForm.Update;<br>
Application.CreateForm(TMainForm,MainForm);<br>
MoveForm.Hide;<br>
MoveForm.Free;{Free从内存中释放对象}<br>
Application.Run;<br>
end.<br>
第一条语句创建了对象,该对象存在内存中,但还不能看见,
为了让它出现并更<br>
新它的内容,调用对象的Show和Update成员函数:Show和Update。
当闪现窗口使<br>
用完后,用Hide函数将它隐藏起来,然后用Free函数释放它所占据的内存。<br>
⒎如果此刻你编译和运行程序,MoveForm窗口一闪而过,
你可能未来得及看<br>
清。为使MoveForm窗口显示几秒种,我们可为MainForm的OnCreate
事件创建一个<br>
处理程序,延迟MoveForm窗口的显现时间。<br>
program TMainForm.FormCreate(sender:Tobject);<br>
var <br>
currentTime:LongInt;<br>
begin<br>
currentTime:=GetTickCount div 1000;<br>
while ((GetTickCount div 1000)<(currentTime+3) do<br>
{不做任何事);<br>
end;<br>
end.<br>
GetTickCount函数返回窗口启动后过去的毫秒数,这个值除以1000
转化为秒数。<br>
此时你编译运行程序,就能得到一个延迟3秒多的闪现窗口。<br>
为闪现窗口添加上Image部件,再对字体及窗口进行修饰,我们就能为应用程<br>
序,创建一个精美的封面或在程序启动时显示重要提示。<br>
<br>
(邮编:330046 地址:江西省统计局计算中心 <br>
电话:0791-6214615 E-mail:<a href="mailto:zengyx@hotmail.com">zengyx@hotmail.com</a>)
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -