我在一个窗口的FORMSHOW中判断一个条件,看是否需要显示这个窗口,如果不需要,我就马上关闭这个窗口,好象时这个窗口就没有显示一样,应该如何做呢?我是又调用了form.close;可是不起作用,哪位有好办法,多谢大家指点。

解决方案 »

  1.   

    将Form的left设置到屏幕的外边,如果条件满足,就移回来,如下:procedure TForm1.onCreate(Sender TObject);
    begin
      form1.left:=Screen.width+8;
    end;
      

  2.   

    没有直接的法子可用,不过没关系,可以曲线救国嘛在窗口上放一个定时器旧搞定了,设成间隔为1毫秒procedure TForm2.Timer1Timer(Sender: TObject);
    begin
      Self.Close;
    end;procedure TForm2.FormShow(Sender: TObject);
    begin
      if  () then 
      begin
        Timer1.Enabled:=true;
        exit;
      end;
    end;
      

  3.   

    根据你说的要求,你在FORMSHOW里面写的确没有问题,但是,窗体为什么不关闭,你找找别的原因,因为代码是没有问题的!虽然楼上的各位所说的的确能作到你所说的关闭的功能,但是并不能满足你的要求,你还是看看你的代码,看你的程序那里有一些问题,造成这样的结果!·
      

  4.   

    FlyingQQ(FlyingQQ),在主窗口中的确是可以直接关闭,但你在主窗口中显示另一个窗口试试,看看第二个窗口能不能关闭
      

  5.   

    不用定时器也能关闭,发送一个WM_CLOSE消息就行了:
    procedure TForm2.FormShow(Sender: TObject);
    begin
      if  () then 
      begin
        PostMessage(Handle, WM_CLOSE, 0, 0);
        Exit;
      end;
    end;