cqujsjcyj 发表于 2013-2-7 21:19:03

建立子窗体时出现错误“cannot make a visible window modal”

 
转自:http://hi.baidu.com/heitangnaicha/blog/item/ca33bf7fc77e993e0dd7da42.html
 
 
 
建立子窗体时出现错误“cannot make a visible window modal”
(1)首先在project的options中,将子窗口改为不自动创建,即“Available forms”。
(2)如果窗体是MDIChild的话,是不可以ShowModal的,可以Show。因为ShowModal与Show是不同的。
         ShowModal时,要求Visiable=False,假使你设置为Visiable=True就会产生错误,而子窗体设置为MDIChild时Visiable自动设置为True;
          Show时,要求Visiable=True或False都不会错。
ShowModal函数定义:
         function TCustomForm.ShowModal: Integer;
         var
        WindowList: Pointer;
        SaveFocusCount: Integer;
        SaveCursor: TCursor;
        SaveCount: Integer;
        ActiveWindow: HWnd;
        begin
        CancelDrag;
        if Visible //Form.visible=True.
or not Enabled or (fsModal in FFormState) or
    (FormStyle = fsMDIChild) then
    raise EInvalidOperation.Create(SCannotShowModal); //产生一个raise,出错误。
        其中SCannotShowModal = 'Cannot make a visible window modal';
            ...
         end   
Show函数定义:
         procedure TCustomForm.Show;
         begin
        Visible := True;
        BringToFront;
         end;
页: [1]
查看完整版本: 建立子窗体时出现错误“cannot make a visible window modal”