掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームを複数のユニットから利用するには? (ID:33328)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
呼び出された方から「データを渡す」というよりは、 入力用フォームの方にpublicなプロパティなりフィールドなりを用意しておいて 呼び出し側のフォームで「データを取り出す」という作りが一般的だと思います。 ポイントは、ダイアログを閉じてもFreeするまではフィールドにアクセスできるということです。 例: 【入力用フォーム側】 type TData = record 郵便番号, 都道府県, 市町村: String; end; TFormB = class(TForm) ... public 処理結果: TData; 使うフィールド: set of (郵, 都, 市); ... function ShowModal: Integer; override; // ShowModalをオーバーライドする end; function TFormB.ShowModal: Integer; begin // 表示前の処理 if 郵 in 使うフィールド then 「郵便番号」を表示 if 都 in 使うフィールド then 「都道府県」を表示 if 市 in 使うフィールド then 「市町村」を表示 // 元のShowModalを実行 Result := inherited ShowModal; // 必要に応じて処理結果を取り出す。フォーム内の各イベントで個別にやってもよい 処理結果.郵便番号 := 「郵便番号」の入力 処理結果.都道府県 := 「都道府県」の入力 処理結果.市町村 := 「市町村」の入力 end; 【呼び出す側】 var B: TFormB; Data: TData; begin B := TFormB.Create(Self); try // 先に必要な情報を設定 B.使うフィールド := [郵, 都]; // 郵便番号と都道府県だけ表示 // 表示する if B.ShowModal <> mrOk then Exit; // 結果を取り出す Data := B.処理結果; finally B.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.