你需要的代码执行完毕之后,执行form_closequery事件,可以吗?

解决方案 »

  1.   

    这个功能我建议可以放在工程启动文件里面,甚至这个时候,一个窗口都未创建。
    我可能表达的不是太明白,但是我觉得你需要的就象一个扉屏功能。比如启动DELPHI时,一个图形一直显示到DELPHI所有的环境导入完为止,然后自动消失。
    一般的做法,是在创建主FORM之后创建扉屏,然后在工程文件,即DPR文件中显示它,然后做一些例程,并决定是否关闭。
    我曾经的做法是在主FORM的CREATE事件时,因为需要导入一个数据库大量的数据,因此我建立了一个扉屏(即另一个窗口),在CREATE事件里创建这个窗口并且显示它,而且,在这个窗口上有一个进度条,表示数据导入的程度,当数据全部导入后,即关闭扉屏。
    我不知道你想具体实现的功能,我感觉需要实现你所说的大概是有多种方法的,你是否可以提出一个具体的问题,然后用代码实现就比较有方向性。因为初始化就和我上面说的办法差不多。
      

  2.   

    为什么不能在SHOW里面处理,可以在SHOW事件里创建例程,再判断返回值,若需要关闭窗体,可以直接调用CLOSE事件,我是这样用的
      

  3.   

    为什么不能在SHOW里面处理,可以在SHOW事件里创建例程,再判断返回值,若需要关闭窗体,可以直接调用CLOSE事件,我是这样用的
      

  4.   

    可试试挂接WM_SHOWWINDOW消息:
    procedure WMShowWindow(var msg: TWMSHOWWINDOW); Message WM_SHOWWINDOW;
    当msg.Show为True,窗口被显示。详细情况可参阅TWMShowWindow结构和WM_SHOWWINDOW消息。
      

  5.   

    判断是否关闭窗体的代码应当放到 onclosequery事件中,根据条件判断来设定canclose.
      

  6.   

    如果是主窗口,当ShowWindow后,给窗口发一个你自己定义的消息——该消息处理函数完成你期望的任务——或直接调用你的处理函数;如果是子窗口,则可在Create后
      

  7.   

    我曾经在Close语句后直接写其他语句,结果Close之后的语句仍然可以正常执行。你可以在OnCloseQuery事件中加上判断语句,如果要关闭主窗口,则设置CanClose:=true;否则,CanClose:=false。在Close语句后你可以加上要启动的其他程序或干其他事情。要启动其他程序可以试试Windows API函数:WinExec
      

  8.   

    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.
      

  9.   

    其实很简单:
      在FORM中申明一个函数,在主FORM中调用他就行了。
    function TForm2.execute:boolean;
    begin
    form2.show;
    {..do somthing
    ...}
    result:=xxxx
    end;