掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
フォームを複数のユニットから利用するには? (ID:33332)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
formBにプロパティを追加すると、フィールドが増えたときに プロパティの新設が(個人的に)めんどくさいので、全ての フィールドの値を持ったクラス(TInfo)を定義して、 それを渡して処理します。 Type //表示するフィールドを選択するための列挙型を準備 TEditField=(ef郵便番号, ef都道府県, ef市町村, ef市町村コード); TEditFields = set of TEditField; TInfo=class EditFields :TEditFields; 郵便番号: String; 都道府県: Integer; 市町村: String; 市町村コード: Integer; end; TFormB public function Execute(Info: TInfo): Boolean; end; 【入力フォーム側】 //ModalResult = mrOK となるボタンを配置します function TFormB.Execute(Info: TInfo): Boolean; begin // 表示前の処理 if ef郵便番号 in Info.EditFields then begin Edit郵便番号.Enavled := True; Edit郵便番号.Text := Info.郵便番号; end; if ef都道府県 in Info.EditFields then begin Edit都道府県.Enavled := True; Edit都道府県.Text := IntToStr(Info.都道府県); end; //略 //フォームを表示して編集する Result := ShowModal = mrOK; //処理結果を編集する if Result then begin if ef郵便番号 in Info.EditFields then begin Info.郵便番号 := Edit郵便番号.Text end; if ef都道府県 in Info.EditFields then begin Info.都道府県 := StrToInt(Edit都道府県.Text); end; end; end; 【呼び出し側】 var frm: TFormB; info: TInfo; begin frm := TFormB.Create(Self); info := TInfo.Create; try //編集するデータ・フィールドを設定 info.EditFields := [ef郵便番号, ef都道府県, ef市町村]; info.郵便番号 := '123-4567'; info.都道府県 := 9999; info.市町村 := 'どこかの県'; //表示 if frm.Execute(info) then begin //編集結果を確認 ShowMessage('郵便番号は' + info.郵便番号 + 'です'); end else begin ShowMessage('中断しました'); end; finally frm.Free; info.Free; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.