2011-01-12 25 views
2

Borland C++で書かれた既存のツールを強化するための割り当てがあります。プログラミングとC++ Builderを初めて使用しています。タスクは、メインフォーム自体にポップアップするメッセージボックスを統合することです。これは、プロジェクトに新しいフォームを追加し、メッセージボックスの代わりに呼び出すことで正常に実行されました。 ユーザーがオプションを選択するまで、コントロールがブロックされるように新しいフォームモーダルを作成しました。Borland C++ビルダーでModalフォームとModelessフォームを作成する方法

グラフを表示するためにグラフという名前の別のフォームをプロジェクトに追加しました。ユーザーが新しいフォームのボタンをクリックすると、グラフに移動します。

2人の子供を母性にしないで母親のみをブロックする(モーダル)方法はありますか?私は自分のプロジェクトに追加した新しいフォームと私のメインフォームにアクセスしたくありません私がこれらの2つの形式ですべての選択をするまで。親切に助けて!

+0

子供がフォームを作成し、Borland C++ビルダーのメインフォーム(モーダル)のみをブロックする方法はありますか? – Dolly

答えて

3

よりもむしろShowModal()を使用して、あなたは、falseに親フォームのEnabledプロパティを設定し、両方のフォームを表示するShow()を使用して、両方のフォームが閉じたときに戻ってtrueに親フォームのEnabledプロパティを設定することができます。

+0

しかし、それは親フォームがriteを実行するのをブロックしませんか?ダイアログを表示せずに親フォームを待機させるにはどうすればよいですか? – GuruC

+0

親フォームは依然としてメッセージ(タイマー、ペインティングなど)を処理しますが、ユーザーは無効になっている間はそれと対話できません。また、古いバージョンのC++ Builderを使用している場合、親フォームを親 'HWND'として指定するには、セカンダリフォームの' CreateParams() 'メソッドをオーバーライドする必要があります(Win32 APIの観点からではなく、VCL )ので、それらのウィンドウは親フォームのウィンドウの後ろに消えることはできません(デフォルトでは、親ウィンドウのHWNDとして 'TApplication'ウィンドウを使用し、TFormウィンドウが互いに対してzオーダーを変更することができます)... –

+0

...より新しいバージョンでは、 'TForm'と' TApplication'は新しい問題をコントロールするための新しい 'PopupMode'と' PopupParent'プロパティを持っています。つまり、2番目のフォームの 'PopupParent'プロパティを親フォームに設定することができます。そして、それを後にすることはできません。 –

0

createの間に自動的に実行しない機能をOnCreate()メソッドから移動することができます。あなたはそれらを例えばに移動することができます。 OnClick()。プログラムcreateの中でShow() メソッドが実行されていたのと同様の状況に遭遇しました。私はOnActivate()メソッドを実装し、OnCreate()から、代わりにShow()メソッドを呼び出しました。

関連する問題