|
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
起動時にアイコン化を指定しても、普通にフォームが表示されて
しまいます。最大化指定でも同じです。
[A]
Delphiで作ったアプリケーションは特別な事をしない限り、起動時に
アイコン化を指定しても普通に立ち上がってしまいます。
これが仕様と言われればまぁ納得しないなりに、仕方ないかな?と思
います。
が、そこは柔軟なDelphiの事ですので、なんとかこれを解消したいと
思ったのですが、結局VCLソースを直接変更するしか手はなさそう
です。
で、もしVCLソースをお持ちなら、下記の部分を変更すればアイコ
ン化起動がすっきり行なえます。ソースはFroms.PASになります。
Delphi2.0Jのみです。恐らく1.0でも同様の事をすればアイコン化起動
が出来ると思います。
尚、この改造を行なうと、アイコン化及び最大表示も行なえます。
1.TApplication.CreateHandleの変更
このメソッドの変数として、
StartupInfo: TStartupInfo;
を追加します。次に、ShowWinNoAnimate(FHandle,・・・の行をコメント
にし、その前に以下のコードを加えます。
StartupInfo.cb := SizeOf(TStartupInfo);
GetStartupInfo(StartupInfo);
CmdShow := StartupInfo.wShowWindow;
If CmdShow In [SW_MAXIMIZE, SW_SHOWMAXIMIZED] Then
ShowWinNoAnimate(FHandle, SW_SHOWDEFAULT)
Else
ShowWinNoAnimate(FHandle, CmdShow);
2.TApplication.Runの変更
現在、
if FShowMainForm then FMainForm.Visible := True;
となっている行をコメントにし、以下のコードに置き換えます。
If CmdShow In [SW_MINIMIZE, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE] Then
Minimize
Else
Begin
If CmdShow In [SW_MAXIMIZE, SW_SHOWMAXIMIZED] Then
FMainForm.WindowState := wsMaximized;
if FShowMainForm then FMainForm.Visible := True;
End;
とします。
3.TApplication.Restoreの変更
RestoreメソッドのRestoreTopMostsの行の次に、以下のコードを加えます。
if FShowMainForm And Not (FMainForm.Visible) Then
FMainForm.Visible := True;
これをコンパイルし、出来上がったDCUユニットをLibディレクトリの下に置いて
おきます。
これで以降アプリケーションを作ると、このForms.DCUがリンクされるので、
最小化を指定して起動するか、プロジェクトソースのApplication.Runの手前
で、
CmdShow := SW_MINIMIZE;
としておくと、起動時に最小化されます。
尚、Forms.PASの修正や、Forms.DCUの置換えを行なう時は必ずバックアップを
作って、元に戻せるようにしておきましょう。
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|