標籤:body 原始碼 響應 點擊 log mini 函數 cti 退出
用MDI實現瀏覽子視窗,具有視窗管理功能,同屏觀看多個網頁的內容
① 多文檔表單(MDI)
MDI表單是一種具有主子結構的表單體系,微軟的Word便是其中的一個典型例子。MDI體系中至少需要兩種表單,只能將其中之一設定為主表單,其餘表單全部則全部為子表單,主表單負責子表單的管理、切換等工作。自然,子表單上承載的內容可各不相同。Tidy瀏覽器最終實現了三種不同的表單:主表單、瀏覽子表單、原始碼子表單。
② 設定表單類型
我們通過表單的FormStyle屬性設定表單類型,它是一個枚舉類型,可取的值包括:fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop。分別對應:普通表單, MDI子表單,MDI主表單, 普通頂部表單。
值得注意的是,表單的FormStyle屬性應在設計期確定,運行期間更改是不可取的。
③ 子表單的建立
一般而言,主表單在應用程式啟動時自動建立,子表單通常在響應使用者的有關動作之後才建立。並且,同一類子表單執行個體可以多次被建立。為了避免程式啟動時即建立子表單,可通過C++Builder的Integration EnvironmentIDE上的菜單Project\Options上的Form標籤頁,將所有子表單從Auto-create forms視窗中,移至Available forms視窗。
④ 子表單的關閉
MDI表單技術中另一個值得注意的問題是,使用者點擊MDI子表單的關閉按鈕企圖關閉子表單,系統預設的動作卻是將其最小化。為了真正的實現關閉子表單並釋放所佔用的記憶體,可在OnClose事件中將引用參數Action設定為caFree。Action的其他可取值為:caNone,caHide,caMinimize,分別對應無動作、隱藏、最小化。
⑤ 主表單的重要屬性的使用
ActiveMDIChild屬性,指向當前活動的子表單。此乃TForm *類型的指標,必要時可強制轉換為任意類型的子表單執行個體。
MDIChildCount屬性,用於判斷已經建立的子表單的總數。
MDIChildren屬性,是一個TForm *類型的指標數組,指向目前存在的所有的子表單。結合MDIChildCount屬性,可以實現子表單的遍曆。
⑥ 子表單之間的切換
直接引用主表單的方法Previous()、Next(),可以實現子表單的前、後切換。
⑦ 子表單的布局
直接引用主表單的方法Tile()、Cascade(),可以實現子表單的平鋪、層疊布局。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
delphi中判斷子表單是否開啟 (2008-10-07 15:21:52)
標籤:it 分類:DELPHI程式設計
今天在一個程式中,需要判斷子表單是否開啟,寫了這段代碼共用出來
在一個MDI表單中限制開啟多個子表單,採用遍曆的方式判斷子表單是否已經存在:
procedure Tf_Main.btnUpdateClick(Sender: TObject);
var
i:Integer;
begin
for i :=0 to f_main.MDIChildCount -1 do //MDIChildCount:總的子表單個數
if (f_main.MDIChildren[i] is Tf_Pass) then //判斷子表單是否存在
begin
self.MDIChildren[i].BringToFront; //把表單放在最前面
MDIChildren[i].SetFocus; //表單獲得焦點
Exit; //退出函數體
end;
//建立新表單
Application.CreateForm(Tf_Pass,f_Pass);
f_Pass.Show;
end;
允許單擊關閉按鈕時關閉子表單:
procedure Tf_Pass.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
f_Pass := nil;
end;
Delphi中實現MDI子表單(轉)