怎样让窗体一出现即自动执行某一例程,然后自己关闭,最好放在哪个事件中? 你需要的代码执行完毕之后,执行form_closequery事件,可以吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个功能我建议可以放在工程启动文件里面,甚至这个时候,一个窗口都未创建。我可能表达的不是太明白,但是我觉得你需要的就象一个扉屏功能。比如启动DELPHI时,一个图形一直显示到DELPHI所有的环境导入完为止,然后自动消失。一般的做法,是在创建主FORM之后创建扉屏,然后在工程文件,即DPR文件中显示它,然后做一些例程,并决定是否关闭。我曾经的做法是在主FORM的CREATE事件时,因为需要导入一个数据库大量的数据,因此我建立了一个扉屏(即另一个窗口),在CREATE事件里创建这个窗口并且显示它,而且,在这个窗口上有一个进度条,表示数据导入的程度,当数据全部导入后,即关闭扉屏。我不知道你想具体实现的功能,我感觉需要实现你所说的大概是有多种方法的,你是否可以提出一个具体的问题,然后用代码实现就比较有方向性。因为初始化就和我上面说的办法差不多。 为什么不能在SHOW里面处理,可以在SHOW事件里创建例程,再判断返回值,若需要关闭窗体,可以直接调用CLOSE事件,我是这样用的 为什么不能在SHOW里面处理,可以在SHOW事件里创建例程,再判断返回值,若需要关闭窗体,可以直接调用CLOSE事件,我是这样用的 可试试挂接WM_SHOWWINDOW消息:procedure WMShowWindow(var msg: TWMSHOWWINDOW); Message WM_SHOWWINDOW;当msg.Show为True,窗口被显示。详细情况可参阅TWMShowWindow结构和WM_SHOWWINDOW消息。 判断是否关闭窗体的代码应当放到 onclosequery事件中,根据条件判断来设定canclose. 如果是主窗口,当ShowWindow后,给窗口发一个你自己定义的消息——该消息处理函数完成你期望的任务——或直接调用你的处理函数;如果是子窗口,则可在Create后 我曾经在Close语句后直接写其他语句,结果Close之后的语句仍然可以正常执行。你可以在OnCloseQuery事件中加上判断语句,如果要关闭主窗口,则设置CanClose:=true;否则,CanClose:=false。在Close语句后你可以加上要启动的其他程序或干其他事情。要启动其他程序可以试试Windows API函数:WinExec unit Unit1;interfaceuses 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. 其实很简单: 在FORM中申明一个函数,在主FORM中调用他就行了。function TForm2.execute:boolean;beginform2.show;{..do somthing...}result:=xxxxend; JPG文件保存质量 Delphi 提交HTTP数据包 如何让满足条件的DBGrid的行的底色变色 TWebBrowser问题 异常处理的except中不能引用出现异常的变量吗? 在delphi怎么调用access数据库的查询? dll使用sHUDPSocket与udpserver的问题 delphi里的指针和c里地指针有什么区别呢? 都提了好几次问题了,还没人能答上来,哎。。。再提。。。。。。。。。。 谁知道这是为什么 如何把ORACLE的SQL语句转换成ACCESS可执行的SQL语句? 找DBTreeView的控件for D4/D5
我可能表达的不是太明白,但是我觉得你需要的就象一个扉屏功能。比如启动DELPHI时,一个图形一直显示到DELPHI所有的环境导入完为止,然后自动消失。
一般的做法,是在创建主FORM之后创建扉屏,然后在工程文件,即DPR文件中显示它,然后做一些例程,并决定是否关闭。
我曾经的做法是在主FORM的CREATE事件时,因为需要导入一个数据库大量的数据,因此我建立了一个扉屏(即另一个窗口),在CREATE事件里创建这个窗口并且显示它,而且,在这个窗口上有一个进度条,表示数据导入的程度,当数据全部导入后,即关闭扉屏。
我不知道你想具体实现的功能,我感觉需要实现你所说的大概是有多种方法的,你是否可以提出一个具体的问题,然后用代码实现就比较有方向性。因为初始化就和我上面说的办法差不多。
procedure WMShowWindow(var msg: TWMSHOWWINDOW); Message WM_SHOWWINDOW;
当msg.Show为True,窗口被显示。详细情况可参阅TWMShowWindow结构和WM_SHOWWINDOW消息。
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.
在FORM中申明一个函数,在主FORM中调用他就行了。
function TForm2.execute:boolean;
begin
form2.show;
{..do somthing
...}
result:=xxxx
end;