同上。

解决方案 »

  1.   

    OnActivate事件
    可能不太行吧,这样不会导致想执行的代码执行多次吗,还请多指教
      

  2.   

    还是ONSHOW吧!不过要注意代码执行的次数!1
      

  3.   

    程序载入后执行一些内容?
    oncreate吧
      

  4.   

    在OnActivate写上如下代码:Self.OnActivate := Nil;  //禁止重入
    ....//其他你想执行的代码。
      

  5.   

    以上方法我都试过,我主要想在窗口框架都出来以后自动的缩成一个图标在状态栏,而不是通过用户按一下按纽。
    缩成一个图标在状态栏的方法我知道我是用一个按纽实现的,代码如下:
    procedure mainform.holditClick(Sender: TObject);
    begin
      ntida.cbSize := sizeof(tnotifyicondataa); //指定ntida的长度
      ntida.Wnd := handle; //取应用程序主窗体的句柄
      ntida.uID := iid; //用户自定义的一个数值,在uCallbackMessage参数指定的消息中使
      ntida.uFlags := nif_icon + nif_tip + nif_message;//指定在该结构参数都有效
      ntida.uCallbackMessage := WM_OPENPAGE;
      //指定的窗口消息
      ntida.hIcon := Application.Icon.handle;
      //指定系统状态栏显示应用程序的图标句柄
      //  ntida.szTip := '淳星办公';
      //当鼠标停留在系统状态栏该图标上时,出现该提示信息 (为产生消息冲突,关闭此功能)
      shell_notifyicona(NIM_ADD, @ntida);
      //在系统状态栏增加一个新图标  ShowWindow(Handle, SW_HIDE); //隐藏主窗体
      //隐藏应用程序窗口在任务栏上的显示
      ShowWindow(Application.Handle, SW_HIDE);
      SetWindowLong(Application.Handle, GWL_EXSTYLE,
      GetWindowLong(Application.handle, GWL_EXSTYLE)
      or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW);
    end