使用 IntraWeb (3) - 頁面切換



新建 StandAlone Application 工程后, 再通過 File > New > Other.. > IntraWeb > New Form 添加兩個窗體.

然后 TIWForm1 上放兩個 TIWButton, 在 TIWForm2 和 TIWForm3 上各放一個 TIWButton. 測試代碼用到三個窗體的 OnCreate 和每個按鈕的 OnClick 事件.

Unit1 中的代碼:
uses ServerController, Unit2, Unit3;

procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  IWServerController.HistoryEnabled := True; //使瀏覽器后退、前進按鈕有效
  IWButton1.Caption := 'IWForm2';
  IWButton2.Caption := 'IWForm3';
end;

procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
  TIWForm2.Create(WebApplication).Show; //建立並顯示 TIWForm2; 執行后 WebApplication.ActiveForm 就從 TIWForm1 變為 TIWForm2
end;

procedure TIWForm1.IWButton2Click(Sender: TObject);
begin
  TIWForm3.Create(WebApplication).Show; //
end;

initialization
  TIWForm1.SetAsMainForm; //這是 TIWAppForm 的 Class 方法; 其作用是建立並設置當前窗口為主窗口(其實在 IW 中只有 ActiveForm, 無所謂 MainForm )
                          //當然也同樣設置其他窗體是首先被激活的窗體


Unit2 中的代碼:
procedure TIWForm2.IWAppFormCreate(Sender: TObject);
begin
  IWButton1.Caption := Name; //只是用不同的標題區別一下
end;

procedure TIWForm2.IWButton1Click(Sender: TObject);
begin
  Release; //釋放后, TIWForm1 就出來了, 達到了返回的目的
           //為什么 IW 提倡使用 Release 而不是通常的 Free 呢?
           //我經過測試發現, Release 和 Free 是有區別的; 官方資料中介紹: IWApp;ication 內部還維護着一個 FReleasedForms 列表.
end;


Unit3 中的代碼:
procedure TIWForm3.IWAppFormCreate(Sender: TObject);
begin
  IWButton1.Caption := Name;
end;

procedure TIWForm3.IWButton1Click(Sender: TObject);
begin
  Release;
end;


還有一個問題, 在這里我們並沒有引用 IWInit, 代碼中的 WebApplication 是哪來的呢? 原來 TIWBaseForm(TIWAppForm < TIWForm < TIWBaseHTMLForm < TIWBaseForm)也提供了 WebApplication.
經測試, 兩個 WebApplication 都指向了同一個 TIWApplication 對象, 挺方便的.

感覺 IW 比傳統的 VCL 更巧妙些.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM