2017-01-18 3 views
1

これは理論的な質問によく似ています。私はなぜShowメソッドがフォームを復元しないのか不思議です(wsNormalなど)。なぜショーはフォームを復元していないのですか?

私はショーがWindowStateを設定しないことを知っている:

procedure TCustomForm.Show; 
begin 
    Visible := True; 
    BringToFront; 
end; 

が、なぜ?ショーを呼び出すと、フォームが実際に画面に表示されると思います。明らかに、これはいつも起こるとは限りません。より正確には、ウィンドウが最小化されたときには発生しません。

だから、Showの背後にある論理は何ですか?なぜ彼らはWindowsStateを廃止したのですか?

+0

'Hide'はフォームを最小化しないため、以前フォームが最大化されていた場合は、' Show'を呼び出した後にwsNormal状態に戻すように修正されます。 – Johan

答えて

2

可視性とウィンドウの状態は、単に独立したプロパティです。それは完全に合理的にあなたが1つを変更することがありますが、他のものを変更することはできません。

VCLデザイナーが設計したのは、基礎となるWin32ライブラリをかなり直接的にVCLにマップすることでした。つまり、VCLデザイナーは柔軟に独自の選択をすることができます。 VCLは、たとえばウィンドウの状態を変更しなくても、視界を変更するのがはるかに難しくなるように提案していました。

+0

あなたの説明に同意してください。しかし、ショーという名前はちょっと奇妙です。名前は 'ShowIfPossible'または 'ShowIfNowMinimized'でなければなりません。 (ちょうど冗談) – Ampere

+0

最小化されたウィンドウが表示されることがあります。あなたのアプリのメインフォームではないフォームを最小化して作成してみてください。 MainFormOnTaskBarがFalseのときのメインフォーム。 –

関連する問題