请看下面的程序,当窗体从最小化到正常状态,并不会弹出消息提示。也就是窗体从最小化到正常状态,OnShow事件没有触发:
procedure TForm1.FormShow(Sender: TObject);
begin
  showMessage('OnShow');
end;
但是对于下面的语句,窗体无法从最小化回到正常状态,也是OnShow事件从新把窗体变为最小化了,也就是窗体从最小化到正常状态,OnShow事件触发了:
procedure TForm1.FormShow(Sender: TObject);
begin
  self.WindowState:=wsMinimized;
end;这个怎么解释?

解决方案 »

  1.   

    OnShow是指创建在改变Visible触发的吧,第2个可以回去的,你点最大话不就可以了,这2个没有什么关系
      

  2.   

    如果这一句写在OnShow的处理程序中:
      self.WindowState:=wsMinimized;当用右键菜单点最小化的任务栏上的窗体时,"还原"菜单的不可选的,灰色的。楼上的朋友,你可以试试嘛。
      

  3.   

    Delphi2007是可以的,Delphi7菜单是不可以,但是,你没看到窗体在最左边吗?最小化的上面的可以
      

  4.   

    OnShow应该是调用了form.Show/form.ShowModal才会触发的.
      

  5.   

    你的Form是主Form在运行的时候默认调用了OnShow的方法,
    窗体的最大最小化并不会解发OnShow的事件.
      

  6.   

    如果把这一句写在OnCreate事件中:
     self.WindowState:=wsMinimized;
    程序运行时最小化,点击最小化后的图标可以变成普通窗体,
    但如果把上面这一句写在OnShow事件中,最小化窗体怎么点也无法恢复为正常。我的是Windows2003、 Delphi7
      

  7.   

    vcl的TApplication是一个不可见窗体,当mainform建立完毕的时候,部分接管了Application的system comand操作,其中就包括了最小化到任务栏
    但是在主窗体首次建立并显示完之前,就将其最小化的话,由于还没有接管最小化的任务栏的代码,所以就最小化到它本来应该最小化到的地方去了
      

  8.   

    12楼的高人对VCL很有研究啊.
    不过还是不太理解,呵呵..