为什么我的程序有的onshow事件在create时就触发了,有的就没有啊?

解决方案 »

  1.   

    看下面的方法,你就知道事件的前后顺序了。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure FormResize(Sender: TObject);
        procedure FormActivate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShowMessage('Create!');
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      ShowMessage('Show');
    end;procedure TForm1.FormResize(Sender: TObject);
    begin
      ShowMessage('Resize');
    end;procedure TForm1.FormActivate(Sender: TObject);
    begin
      ShowMessage('Activate!');
    end;end.
      

  2.   

    这个我知道的
    比如我有
      Application.CreateForm(TFrmMain, FrmMain);
      Application.CreateForm(TFrmLogin, FrmLogin);
      Application.CreateForm(TAboutBox, AboutBox);
      Application.CreateForm(TfmSetup, fmSetup);
      Application.CreateForm(TFrmDaseData, FrmDaseData);
      Application.CreateForm(TFrmEditData, FrmEditData);
    后几个formCreate全没有写什么东西但是
    FrmEditData里的show事件在Application.CreateForm(TFrmEditData, FrmEditData);
    后就发生了。
      

  3.   

    而其它几个form中的show事件,是在我form.show后再发生的
      

  4.   

    在show的时候触发阿:)
    WM_SHOW消息
    不过非常赞成一楼的方法----学语言和编程就该这样,佩服,学习