我RUN的时候弹出一个对话框
上面这样写的
Project Project1.exe raised exception class EInvalidOperation with message 'cannot change visible in onshow or onhide'.Process stopped.  Use Step or Run to continue.
这是怎么回事啊
我没在ONSHOW 和INHIDE里面改变visible的属性啊
是什么地方出了错误啊
该怎么解决??

解决方案 »

  1.   

    //你估计是写了这样的语句
    procedure TForm1.FormShow(Sender: TObject);
    begin
      Visible := False;
    end;//看如下语句是否能达到你的目的
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Application.ShowMainForm := False;
    end;VCL中由如下代码触发该异常
    procedure TCustomForm.CMShowingChanged(var Message: TMessage);
    //....
    begin
      if not (csDesigning in ComponentState) and (fsShowing in FFormState) then
        raise EInvalidOperation.Create(SVisibleChanged);
    //....
    end;
    //OnShow、OnHide中都处于fsShowing状态
      

  2.   

    我如果写了这样的语句是不是会引发这样的问题procedure Tmain.N27Click(Sender: TObject);begin
    panel1.Show;
    panel2.Hide;
    panel3.Hide;
    panel1.BringToFront;
    dbgrid2.Hide;
    dbgrid3.Hide;
    dbgrid1.Show;
    dbgrid1.Align:=alclient;end;procedure Tmain.N28Click(Sender: TObject);begin
    panel1.Show;
    panel2.Hide;
    panel3.Hide;
    panel1.BringToFront;
    dbgrid1.Hide;
    dbgrid2.Hide;
    dbgrid3.Show;
    dbgrid3.Align:=alclient;end;
    这样是不是就会出现
    //OnShow、OnHide中都处于fsShowing状态
    这个问题
      

  3.   

    錯誤的意思是說,不能在窗體的show事件裏改變自己或其他窗體的show,hide等屬性!