2011-08-02 6 views
2

こんにちはすべてデルファイのプログラムの開始時にポップアップフォームを作成するには?

アプリケーションを実行するときに、メインフォームの上にそのオプションフォームを表示したいとします。では、最初にバックグラウンドでメインフォームのオプションフォームを表示するにはどうすればよいですか?

ありがとうございました。

+0

メインフォームのそのようなポップアップフォームはバックグラウンドで表示されます。 – naren

+0

メインフォームのOnCreateまたはOnshowイベントでオプションフォームを作成しようとしましたが、オプションフォームのみが表示されます。 :( – naren

答えて

2

としてメインフォーム上のメッセージハンドラを追加します。他のアプリケーションのフォームが閉じてメインのものが再びアクティブになったときに発火するのを防ぐために、いくつかのコードでラップする必要があります。

procedure TForm1.FormActivate(Sender: TObject); 
Const 
{$J+} 
    SettingsShown : Boolean = false; 
{$J-} 
begin 
    if SettingsShown = false then 
    begin 
    Form2.ShowModal; 
    SettingsShown := True; 
    end; 
end; 
+0

ありがとうBrian .. – naren

+0

私はノンモーダルフォームが自動的にポップアップされたフォームの方が良いと思います。モーダルフォームを使用する場合は、恐ろしいZ-修正があるDelphiのバージョンを持っていない場合(修正プログラムを使用する、ウィンドウのPopupParentを設定する)、または回避するために特別なコードを記述しない限り、バグを注文してください。 –

0

代わりのConst AM_ShowOptionForm = WM_APP +1とポストバックメインフォームへのメッセージのようなカスタムメッセージを作成OnCreateOptionForm.ShowModalまたはOnShowを使用。

は、このような OnActivateを使用することはでき

Procedure RecieveOptionFormMessage(var Msg:TMessage); Message AM_ShowOptionForm 
begin 
    OptionForm.ShowModal; 
end;