社区
Delphi
帖子详情
怎样让窗体一出现即自动执行某一例程,然后自己关闭,最好放在哪个事件中?
wyj2
2000-02-16 01:21:00
有时要求窗体一出现就自己执行某一功能(譬如初始化),而且还要根据执行的结果判断是否要立即关闭窗体,但是关闭窗体的代码又不能放在Active或Show事件中,我通常的做法是放在Paint事件中,行倒是行,就是实现起来挺难过,还要专门声明一个信号判断是不是第一次Paint,我想可能有更舒服的办法,不知各位有何建议。谢谢赐教
...全文
368
11
打赏
收藏
怎样让窗体一出现即自动执行某一例程,然后自己关闭,最好放在哪个事件中?
有时要求窗体一出现就自己执行某一功能(譬如初始化),而且还要根据执行的结果判断是否要立即关闭窗体,但是关闭窗体的代码又不能放在Active或Show事件中,我通常的做法是放在Paint事件中,行倒是行,就是实现起来挺难过,还要专门声明一个信号判断是不是第一次Paint,我想可能有更舒服的办法,不知各位有何建议。谢谢赐教
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
渤海海峡
2000-02-16
打赏
举报
回复
判断是否关闭窗体的代码应当放到 onclosequery事件中,根据条件判断来设定canclose.
data
2000-02-16
打赏
举报
回复
我也想知道
Lin
2000-02-16
打赏
举报
回复
可试试挂接WM_SHOWWINDOW消息:
procedure WMShowWindow(var msg: TWMSHOWWINDOW); Message WM_SHOWWINDOW;
当msg.Show为True,窗口被显示。详细情况可参阅TWMShowWindow结构和WM_SHOWWINDOW消息。
meijg
2000-02-16
打赏
举报
回复
为什么不能在SHOW里面处理,可以在SHOW事件里创建例程,再判断返回值,若需要关闭窗体,可以直接调用CLOSE事件,我是这样用的
meijg
2000-02-16
打赏
举报
回复
为什么不能在SHOW里面处理,可以在SHOW事件里创建例程,再判断返回值,若需要关闭窗体,可以直接调用CLOSE事件,我是这样用的
Venne
2000-02-16
打赏
举报
回复
这个功能我建议可以放在工程启动文件里面,甚至这个时候,一个窗口都未创建。
我可能表达的不是太明白,但是我觉得你需要的就象一个扉屏功能。比如启动DELPHI时,一个图形一直显示到DELPHI所有的环境导入完为止,然后自动消失。
一般的做法,是在创建主FORM之后创建扉屏,然后在工程文件,即DPR文件中显示它,然后做一些例程,并决定是否关闭。
我曾经的做法是在主FORM的CREATE事件时,因为需要导入一个数据库大量的数据,因此我建立了一个扉屏(即另一个窗口),在CREATE事件里创建这个窗口并且显示它,而且,在这个窗口上有一个进度条,表示数据导入的程度,当数据全部导入后,即关闭扉屏。
我不知道你想具体实现的功能,我感觉需要实现你所说的大概是有多种方法的,你是否可以提出一个具体的问题,然后用代码实现就比较有方向性。因为初始化就和我上面说的办法差不多。
yijun2000
2000-02-16
打赏
举报
回复
你需要的代码执行完毕之后,执行form_closequery事件,可以吗?
gypb
2000-02-16
打赏
举报
回复
其实很简单:
在FORM中申明一个函数,在主FORM中调用他就行了。
function TForm2.execute:boolean;
begin
form2.show;
{..do somthing
...}
result:=xxxx
end;
Hill
2000-02-16
打赏
举报
回复
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
//自定义消息
const
WM_AfterShowForm = WM_User +2;
type
TForm1 = class(TForm)
Button1: TButton;
//在此事件中使用 postMessage;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
//消息处理
Procedure AfterShowForm(var Msg: TMessage); Message WM_AfterShowForm;
//你自己的代码
Procedure AfterShow;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
Procedure TForm1.AfterShowForm(var Msg:TMessage);
begin
AfterShow;
end;
Procedure TForm1.AfterShow;
begin
Close;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
//发送消息
PostMessage(Handle,WM_AfterShowForm,0,0);
end;
end.
jll
2000-02-16
打赏
举报
回复
我曾经在Close语句后直接写其他语句,结果Close之后的语句仍然可以正常执行。你可以在OnCloseQuery事件中加上判断语句,如果要关闭主窗口,则设置CanClose:=true;否则,CanClose:=false。在Close语句后你可以加上要启动的其他程序或干其他事情。要启动其他程序可以试试Windows API函数:WinExec
WHQ
2000-02-16
打赏
举报
回复
如果是主窗口,当ShowWindow后,给窗口发一个你自己定义的消息——该消息处理函数完成你期望的任务——或直接调用你的处理函数;如果是子窗口,则可在Create后
QT常用
例程
收集整理(易集成至主工程)
因为仅发信号,所以需自己写显示右键菜单的slot来响应,例如一个表格(QTableView类型)表头的显示右键菜单槽: datatable->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); connect...
使用 .NET 框架轻松开发完美的 Web
窗体
控件
现在,我们已经介绍了 .NET Web 控件的基本功能,接下来,让我们看一个示例,该示例演示了 Web
窗体
控件如何为页上的其他控件激发 .NET
事件
。我发现 SDK 文档在介绍 Web 控件
事件
时很模糊。它将用户在浏览器上的...
delphi dll创建及调用
第一章 DLL简单介绍由于在目前的学习工作
中
,需要用到DLL文件,就学习了下,在这里作个总结。首先装简单介绍下DLL:1,减小可
执行
文件的大小DLL技术的产生有很大一部分原因是为了减小可
执行
文件的大小。当操作系统...
利用底层键盘钩子屏蔽任意按键
很多人都知道,如果想在系统范围内屏蔽键盘上的任意按键需要...钩子,是一种相对复杂一点的技术,通常用来监视系统
中
某一
类型的
事件
,这些
事件
可以与
某一
线程相关(线程钩子),也可以是系统
中
的所有线程(全局钩子)。
WebBrowser 控件 和winform
窗体
的双向操作(转)
最近看到博客园入门教学文章比较流行,自己最近又偷懒比较多,没啥心得,不妨写一篇没啥深度的入门文章吧。 话说有了WebBrowser类,终于不用自己手动封装SHDocVw的AxWebBrowser这个ActiveX控件了。这个类如果仅仅...
Delphi
5,379
社区成员
262,722
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章