2012-03-04 15 views
1

私のアプリケーションのメインフォームがfsMDIFormかどうかを判断する方法が必要です。メインフォームはfsMDIFormです

どうすればいいですか?

+1

@デビッドを移動させることができる

function GetMovementArea: TRect; var MovementRect: TRect; begin if Application.MainForm.FormStyle = fsMDIForm then Windows.GetWindowRect(Application.MainForm.ClientHandle, MovementRect) else SystemParametersInfo(SPI_GETWORKAREA, 0, @MovementRect, 0); Result := MovementRect; end; 

この戻りTRectれる:たぶん彼は、任意の*アプリケーション*の一部であることができるユーティリティユニットを書いていますか?それは 'IsConsole'(おそらく)のようなものです。 –

+0

@andreas私は "私のアプリケーション"をちょうどそれを意味していましたが、おそらくあなたは正しいです –

+0

私の問題は、私が多くのアプリケーションで使用しているいくつかの標準フォーム(About、DB setupなど)フォームはMDI内でのみ移動可能でなければなりませんが、MDI以外のアプリケーションで使用される場合は、画面全体を移動できる必要があります。 そのため、メインフォームがfsMDIFormであるかどうかを確認して確認する必要があります。 – OZ8HP

答えて

9

Application.MainForm.FormStyleをテストできます。あなたはそのメインフォームのハンドルを持って、その後場合は、別のプロセスのメインフォーム(他の呼び出し元のアプリケーション)のために知ってほしいと仮定すると、

0

、使用:

MDIActive := FindWindowEx(MainFormHandle, 0, PAnsiChar('MDICLIENT'), nil) <> 0; 
0

私は機能になってしまいました私のフォームは、周りの

+2

ローカル変数は必要ありません! –

+1

Andreasが提供する正確なソリューションを使用しました。彼の答えを受け入れない理由は何ですか? –

関連する問題