程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 使用 IntraWeb (3)

使用 IntraWeb (3)

編輯:Delphi


新建 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 更巧妙些.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved