Mam's WebSite
建築CGパース住宅CGパース

Mamの覚書Q&A検索

トップページMamの覚書Q&A検索Delphi(VCLforTheWeb)⇒Q&A


大項目:「 Delphi 」 - 中項目:「 VCLforTheWeb 」

「 intraWeb(VCL for the Web)の使い方(複数フォームでセッションを使って値を引き渡す) 」

AフォームからBフォームへユーザーが入力した値を引き渡すには、どうしたらいいでしょうか。


回答

参考までに簡単なアプリケーションを作成してみます。

ソース

Delphiを起動します。(全てのプロジェクトは閉じておきます)
 
[ファイル]⇒[新規作成]⇒[その他]をクリックします。
[VCL for the Web]を選択し[VCL for the Web Application]を選択し、[OK]をクリックします。
今般はテストのために [StandAlone Application]を選択し、[Create User Session]にチェックを入れます。
ProjectNameは適当に「intraWebMyTest」とでもしておきます。Main FormはHTML4.0のままで、OK]をクリックします。
 
2つ目のフォームを作成するために、
[ファイル]⇒[新規作成]⇒[その他]をクリックします。
[VCL for the Web]を選択し[New Form」を選択し、[OK]をクリックします。
[Application Form]を選択して[OK]をクリックします。
これでメインのフォームがUnit1のTIWForm1、サブのフォームがUnit2のTIWForm2となります。
 
日本語などマルチバイトを扱う場合(新しいバージョンのIntraWEBがインストールされているとします)は、
[プロジェクト]⇒[プロジェクトに追加]から
UTF8ContentParser.pasファイルを選択して[開く]をクリックします。
 
Ctrl+F12などで、UserSessionUnitのデザインを開いて、以下の1行のみ追加します。
  type
    TIWUserSession = class(TIWUserSessionBase)
    private
      { Private declarations }
    public
      { Public declarations }
      st:string;  //ここを追加
    end;
 
TIWForm1のコードを開いて、
  implementation
  {$R *.dfm}
の直下に以下を追加します。
  uses ServerController,UserSessionUnit,Unit2;
TIWForm1のデザイナーを開いて、
ツールパレットの[IWStandard]のTIWEditとTIWButtonをドラッグします。
IWButton1をダブルクリックして以下を追加します。
  procedure TIWForm1.IWButton1Click(Sender: TObject);
  begin
    UserSession.st:=IWEdit1.Text;        //ここを追加
    TIWForm2.Create(WebApplication).Show;//ここを追加
  end;
 

 
TIWForm2のコードを開いて、
  implementation
  {$R *.dfm}
の直下に以下を追加します。
  uses ServerController,UserSessionUnit,Unit1;
TIWForm2のデザイナーを開いて、
ツールパレットの[IWStandard]のTIWEditとTIWButtonをドラッグします。
TIWForm2のOnCreateイベントを作成し、以下のコードを入力。
  procedure TIWForm2.IWAppFormCreate(Sender: TObject);
  begin
    IWEdit1.Text:=UserSession.st;  //ここを追加
  end;
IWEdit1のOnClickイベントに以下を追加
procedure TIWForm2.IWButton1Click(Sender: TObject);
begin
  self.Release; //ここを追加
end;
 

以上で実行すると、きちんとTIWForm1からTIWForm2へ値が引き継げることが確認できます。


Mam's WebSite