2011-01-12 118 views
2

我有一个任务来增强用Borland C++编写的已有工具,我是编程和C++ builder的新手。其任务是将弹出的消息框集成到主表单本身中,我已经成功完成了该工作,方法是在项目中添加一个新表单并将其替换为消息框。 我已经使我的新表单模式,以便控制被阻止,直到用户选择一个选项。如何在borland C++ builder中创建Modal和无模式表单

现在我添加了另一个名为graph的图形来显示一个图形,并且我希望控件在用户单击新窗体中的一个按钮时转到图形。

是否有办法让两个孩子无模而且只阻止父窗体(模态)。简而言之,我想访问我添加到我的项目中的两个新窗体,并且我不想访问我的主窗体,直到我用这两种形式做出所有选择。一定帮助!

+0

是否有一种方法可以让子窗体无模式并仅阻止Borland C++构建器中的主窗体(模态)? – Dolly

回答

3

而不是使用ShowModal(),你可以在父窗体的Enabled属性设置为false,使用Show()展示两种形式,然后设置父窗体的Enabled财产回真当这两种形式都被关闭。

+0

但是,这并不阻止父母的形式运行礼仪?我们如何让父窗体等待而不显示对话框? – GuruC

+0

父窗体仍将处理消息(定时器,绘画等),但用户在禁用时将无法与其交互。此外,如果您使用的是旧版本的C++ Builder,则可能需要重写次要窗体的'CreateParams()'方法以将父窗体指定为父窗体'HWND'(从Win32 API的角度来看,而不是VCL的),所以这些窗口不会消失在父窗体的窗口后面(默认情况下使用'TApplication'窗口作为父HWND,这允许TForm窗口相互之间改变z顺序)... –

+0

...在更新的版本中,'TForm'和'TApplication'具有新的'PopupMode'和'PopupParent'属性可以更好地控制这个问题。也就是说,您可以将第二个窗体的“PopupParent”属性设置为父窗体,然后它们将永远不会落后于它。 –

0

您可以从OnCreate()方法中移动您不想在create期间自动运行的功能。您可以将它们移动到例如OnClick()。我遇到类似的情况,其中在程序create期间正在运行Show() 方法。我实施了OnActivate()方法,并从那里调用Show()方法,而不是从OnCreate()