2011-12-22 7 views
1

私は過去5年間で作成した手動で作成したフォームを少なくとも300以上のバリエーションで使用していますが、この問題は見たことがありません。私はもちろん、メインフォーム、そして小さな子供フォームの束を持っています。これらの子フォームは自動作成ではなく、コード内で手動で宣言され作成されます。このプロジェクトはまだ時期尚早で、このプロジェクトでは何かが欠けているかもしれないほどのコードがないことを意味しています。しかし、問題は、私が行うのは、フォームを作成し、親フォームをメインフォームに割り当て、フォームを表示するコードがなくても、フォーム自体を表示することです。フォームは自動的に表示せずに私に話していますか?

FControlPanel:= TfrmControlPanel.Create(nil); 
FControlPanel.Parent:= Self; 

これはすべて私が作成しなければならないコードです。実際の子フォームにはまったくコードはありません。表示されるには少なくともFControlPanel.Showが必要ですが、何らかの理由でそれが表示されます。

私は、この動作の原因となった原因を突き止めました。しかし私は2つと2つを一緒に置くことはできません。私はMDIフォームの機能を使用して、メインフォーム内にフォームを保持しようとしました。しかし、多くの試行錯誤のシナリオの後で、私はあきらめて自分の財産を取り戻しました。私が変更した唯一のプロパティは、FormStyleでした - 私はfsMDIForm、fsNormal、およびfsStayOnTopの間で(試行のために)切り替えたメインフォームです。子フォーム私はfsMDIChildに切り替えました。私が諦めた後、私はそれらをデフォルトのfsNormalに戻しました。この "オートショー"が起こり始めたとき、これは周りを遊んだ後です。

また、おそらく重要なことに、これらの子フォームはマスターフォームから継承されています。このマスターフォームには実際にはコードはありませんが、少なくともそれを示すコードはありません。私のコードのどこにも、私はこれらの子フォームを表示するように言っていますが、とにかくそれはします。私は彼らが自動作成していないことを知っています。

私は間違っていますか?

PS - 一般的にMDIを実装する際の問題は、別の質問の対象ですが、私はMDIについて尋ねることはありませんが、コンポーネントのプロパティを変更すると永続的に例えば、TPanel上で、 "ParentBackground"をtrueに切り替えた後、再びfalseに戻すと、XPManを使用するときに、指定された色が正しく表示されます。

答えて

6

IIRC設定フォームのスタイルをfsMDIChildに設定すると、フォームのVisibleプロパティがTrueに変更されます。したがって、フォームを作成するたびに、デフォルトで表示されます...フォームVisibleプロパティをFalseに戻して、「自動表示」の動作を終了する必要があります。

+0

BINGO!大変感謝しています - フォームにVisibleプロパティがあっても忘れてしまいました。+1して受け入れる:D –

+0

その場合、私は 'Visible'プロパティが作成時に可視かどうかを指定することを意図していますか?私は常にフォームに表示/非表示を使用しています... –

+0

はい。私はそれが自動作成されたフォームで使用するためにindendされていると思います。 – ain

0

VisibleプロパティをMDIChildフォームでFalseに変更することはできません。

だけで以下の操作を行い、デルファイ7でのMDIChildフォームの自動上映を修正するには:

  • オープンプロジェクト - > [オプション
  • は、「自動作成フォーム」リスト内の各MDI子フォームを選択し、クリックしてください ">"ボタンをクリックしてフォームを "使用可能なフォーム"リストに移動します。
  • MDI メインフォーム、ログインフォーム、データモジュールなど、「自動作成」したいフォームのみを送信するようにしてください。

ネルソン・サントス

関連する問題