`

建立子窗体时出现错误“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;

分享到:
评论

相关推荐

    delphi 一个单元多个窗体

    在Delphi编程环境中,"一个单元(Unit)多个窗体"是一种组织代码的方式,它允许你在同一个单元文件中管理多个窗体(Form)的代码。这种方式可以提高代码的复用性和模块化,但需要正确地处理各个窗体的定义和关联资源...

    C#实现winform用子窗体刷新父窗体及子窗体改变父窗体控件值的方法

    在C# WinForm开发中,有时我们需要在子窗体中操作或更新父窗体的状态,例如刷新父窗体内容或更改父窗体上的控件值。以下两种方法详细阐述了如何实现这一目标。 **方法一:使用委托** 在这种方法中,我们通过定义一...

    设置子窗体相对父窗体打开的位置

    本资源针对的就是如何在创建子窗体时,使其在打开时能正确地相对于父窗体定位。 首先,我们需要理解MFC中的CWnd类,它是所有窗口类的基类,包括主窗口和子窗口。当创建一个子窗体时,通常会继承自CWnd或它的派生类...

    vb6如何在任务栏中显MDI子窗体的标题(测试)

    在VB6(Visual Basic 6)中,MDI(Multiple Document Interface)子窗体是一种特殊类型的窗体,它被设计为在主MDI窗体内部打开和管理多个文档或界面。默认情况下,MDI子窗体在任务栏上并不会显示它们自己的标题,...

    C++调用子窗体

    在C++编程中,"C++调用子窗体"是一个常见的需求,特别是在开发桌面应用程序时。不基于MFC(Microsoft Foundation Classes)的窗口调用意味着我们将使用更底层的API,如Win32 API,来创建和管理窗口。VC++6.0是一个...

    MDI.rar_C#子窗体

    通过设置子窗体的`Visible`属性,可以控制子窗体的显示和隐藏。这在需要暂时隐藏某些子窗体时非常有用。 10. **子窗体的布局策略** 可以使用不同的MDI布局策略,如`MdiLayout.TileHorizontal`、`MdiLayout....

    Delphi11.3FMX嵌套FMX窗体

    5. **显示与隐藏**: 当需要显示或隐藏子窗体时,可以调用其Show和Hide方法,或者调整其Visible属性。 6. **布局管理**: 由于FMX提供了各种布局组件(如Grid, Stack, Align, Spacer等),可以方便地对嵌套窗体进行...

    VS2017 .NET C# MDI窗体菜单,隐藏子窗体ICON图标

    这样,子窗体的菜单将不会出现在父窗体的菜单栏中,从而避免了界面混乱的问题。 #### 总结 通过对MDI窗体的行为进行细致控制,可以有效提升应用程序的用户体验。无论是隐藏子窗体图标还是管理子窗体菜单的显示方式...

    框架window窗体嵌套在tabControl中

    例如,未被显示的TabPages上的Window窗体应尽量减少其资源占用,可以通过设置其IsVisible属性为false,或者在不显示时释放一些资源。 总结,将Window窗体嵌套在TabControl中是C# GUI开发中一种实用的设计模式。它...

    winfrom窗体实现置顶显示,通过按钮把指定窗口置顶显示,窗体不重复显示

    如果满足条件,我们创建新的子窗体实例,并设置关闭事件处理程序,以便在子窗体关闭时重置引用,防止内存泄漏。如果子窗体已经存在并且可见,我们就调用`BringToFront()`方法使子窗体移动到所有其他窗体的前面,然后...

    Delphi7隐藏主窗体同时不出现在任务栏

    总结来说,要让Delphi7的主窗体隐藏并移出任务栏,关键在于调整窗体的`Visible`、`ShowInTaskbar`、`BorderStyle`和`Caption`属性,以及合理地管理子窗体和系统托盘图标。通过这些技巧,开发者可以创建符合特定需求...

    从外部Dll中调用子窗体

    在Windows编程中,有时我们需要在外部动态链接库(DLL)中调用应用程序的子窗体。这通常是出于模块化设计、代码重用或插件架构的目的。本文将深入探讨如何实现这一功能,主要关注以下几个方面:DLL的创建、子窗体的...

    子父窗体切换随意关闭其一整体关闭(基于成员窗体原理

    8. **窗体的可见性和IsDisposed属性**:通过设置窗体的Visible属性来显示或隐藏窗体,检查IsDisposed属性来确定窗体是否已被关闭,这在管理窗体生命周期时非常重要。 综上所述,要实现标题描述的功能,开发者需要...

    make-3.82.tar.gz

    Some systems' Make programs are broken and cannot process the Makefile for GNU Make. If you get errors from your system's Make when building GNU Make, try using `build.sh' instead. GNU Make is free ...

    C#创建MDI窗体实例

    7. **关闭子窗体**: 当用户关闭MDIChild时,通常会触发一个事件,这个事件可以由MDIParent捕获并处理,例如确认是否真的要关闭或者保存更改。 ```csharp private void childForm_FormClosing(object sender, ...

    编程问题及解决方法[参考].pdf

    出现"Cannot make a visible window modal"错误通常是因为尝试将一个已经显示的窗口设为模态。解决方法是确保在调用`ShowModal()`之前,窗口是关闭或隐藏状态。 6. **字符串与空串的比较**: 在C++Builder中,...

    window窗体属性

    ### Window窗体属性详解 在IT开发领域,尤其是在桌面应用程序设计中,理解并熟练掌握Window窗体属性是至关重要的。本文将对一个整理的小文档中提及的一些关键窗体属性进行详细解析,帮助开发者更好地控制和优化窗体...

    C# Winform 实现窗体间切换

    - 观察者模式:子窗体可以作为观察者,当主窗体状态变化时(如切换),子窗体接收到通知并更新自身状态。 8. **性能优化**: - 避免不必要的资源分配和释放,如只在需要时创建子窗体,关闭时正确释放资源。 - ...

    Visible Analyst 中文操作手册

    Visible Analyst包含了一个用于定义系统组件并提供错误监测以及一致性检验支持的资料库。但中文说明比较少,用于结构化设计的文档更少,本文档通过该软件自身的英文说明,经加工后形成中文操作指南,方便大家参照...

    C#中主窗体Panel中加载其他多个窗体Panel控件

    在C#编程中,开发GUI(图形用户界面)应用程序时,我们经常需要在主窗体上展示多个子窗体或面板。Panel控件是Windows Forms中一个非常实用的组件,它可以作为一个容器,用来承载其他的控件。在这个场景下,我们将...

Global site tag (gtag.js) - Google Analytics