2016-08-19 5 views
0

私は以下のように動作するアプリケーションを持っています:登録、検索などのための開いた子フォームであるメインフォームがあります。それのサイズにかかわらず。子フォームの一元化が機能しない

enter image description here

:次の図に示すように、

formChild->Left=(MainForm->pnlMain->Width/2); 
formChild->Top=(MainForm->pnlMain->Height/2)-(formChild->Height/2); 

これまでのところ、すべての権利、フォームが正しくセンタリングされています。このために私は、フォームの息子のonCreateに次のコードを使用しています子フォームが閉じられ、メインフォームが復元され、息子フォームが開かれた場合、次の問題が発生します。 enter image description here

子フォームが生成された位置に生成されますt時間(最大化されたウィンドウ)。

+0

問題を示す[mcve]を投稿してください。 –

+0

アプリケーションで表示するたびに、または同じインスタンスが繰り返し使用されるたびに、子フォームを作成していますか?子フォームのOnShowイベントハンドラにコードを入れてみてください。 –

+0

私はすでにOnShowイベントで試してみました。行動は同じです。 –

答えて

5

これに対処する正しい方法は、子フォームのPositionプロパティをpoMainFormCenterに設定することです。

これは、子フォームが最初に作成され、表示されるときに、MainFormの中央に配置されるようにします。

子供のフォームの位置は、単に非表示にして後で再度表示するだけで更新されません。子フォームが表示されるたびに常に中央に表示されるようにするには、閉じた状態で子フォームを破棄し、表示する前に再作成する必要があります。

+0

フォームの子のonCloseイベントで削除フォームを使用していますが、違反アクセスエラーが表示されています。実行時にフォームを削除する正しい方法はどれですか? –

関連する問題