0

メインフォームと設定フォームの 2 つのフォームを持つ単純なプログラムがあります。明らかに、設定フォームを使用すると、ユーザーは設定を変更できます。初期化セクションがファイルから設定を読み取る設定ユニットがあります。

プログラムが最初にインストールされ、初めて起動されたとき、設定は空になります。そうであれば、設定フォームを表示したいと思います。問題は、チェックと呼び出しコードをどこに置くかです。

My Application.lpr が含まれています

begin
  RequireDerivedFormResource := True;
  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);
  Application.CreateForm(TSettingsForm, SettingsForm);
  Application.Run;
end.                       

私の設定ユニットは大まかにこのようなものです

uses
  Classes, SysUtils, INIFiles;

type
  TSettings = class
    public
      procedure LoadFromFile();
      procedure SaveToFile();
    ...
    end;

var
  Settings: TSettings;

implementation

{ TSettings }

...

initialization
  Settings := TSettings.Create;
  Settings.LoadFromFile();

finalization
  Settings.SaveToFile();
  FreeAndNil(Settings);

end.       

この MainForm.FormCreate の空の設定をチェックすると、まだ作成されていないため、設定フォームを表示できません。

SettingsForm インスタンスを参照する明確な変数がないため、 Application.lpr でそれを行う方法がわかりません。とにかく置くのがもったいない。

  • SettingsForm が完全に初期化され、表示される準備ができた後にのみ呼び出されると仮定して、SettingsForm.FormCreate でこのチェックを行うことはできますか? お電話いただけますShow()FormCreate()

  • 私の設定タイプがいつインスタンス化されるのか正確にはわかりません。

  • 空の設定をチェックする場所を決定するために使用できるアイデア、ガイドラインのデザインパターン、またはその他の資料はありますか?

4

2 に答える 2

1

以下は、Delphi フォーム作成のシーケンスの非常に簡単なリストです。

ここで、私の間違いでなければ、フォームは .dpr ファイルにリストされている順序で作成され (プロジェクト -> ソースの表示を参照)、そこにリストされている最初のフォームがメイン フォームになります。

編集:


アクション

作成 -> 表示 -> ペイント -> アクティブ化 -> サイズ変更 -> ペイント -> クエリを閉じる -> 閉じる -> 非アクティブ化 -> 非表示 -> 破棄


イベント

OnCreate -> OnShow -> OnPaint -> OnActivate -> OnResize -> OnPaint -> OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy

(ここから引用)

于 2013-08-15T14:08:22.673 に答える