Delphi MDI應用程序高級技巧三則(一)

Delphi MDI應用程序高級技巧三則(一)http://www.netgocn.com

本文介紹幾個Delphi MDI應用程序的編程技巧,雖然純屬技巧,但是本文的方法在正常編程時,通常會被編譯器認爲是錯誤的或是違背編程環境缺省許可值的。不過有時爲了一些特殊的用途或特殊的視覺效果,按下述的方法一試,可以在明知不可違而違之的情況下,得到很好的結果。

下述各示例均在Delphi6、Windows2000下完成,對涉及的控件命名是任意的,僅爲方便說明問題。

一、子窗口的隱藏

在Delphi編程環境下,MDI子窗口在運行期間可以動態地被創建和銷毀,但是不能夠被隱藏,如果試圖通過Visible屬性或Hide方法隱藏子窗口,編譯器將報出“Cannot hide an MDI Child Form.”的錯誤提示!

如果某個子窗口中承載了很多要保留的數據而不能銷毀,但又暫時不想要它出現在屏幕上時,最好的方法就是將其隱藏,待需要時再將其顯示出來則可。下面兩種方法可以隱藏和顯示子窗口,並避開了編譯器的報錯提示。

1) 使用Windows API函數ShowWindow(),示例代碼如下:

ShowWindow(ChildForm.Handle, SW_HIDE); // 隱藏子窗口

ShowWindow(ChildForm.Handle, SW_RESTORE); // 顯示子窗口

說明:使用Windows API直接隱藏子窗口,其子窗口的Visible屬性和其顯示狀態是不一至的。當子窗口不可見時,其Visible屬性可能仍然是True。

2) 直接設置子窗口的Visible屬性

此時,首先要在需要隱藏的子窗口中重載TCustomForm的VisibleChanging方法,並在其實現過程中屏蔽掉繼承代碼,否則編譯器將在隱藏子窗口時報錯。

然後就可以直接設置這個子窗口的Visible屬性爲False或True來隱藏或顯示它了。示例如下:

a) 子窗口部分

type

TChildForm = class(TForm)

private

procedure VisibleChanging; override;//重載

end;

procedure TChildForm.VisibleChanging;

begin

{使用組件屬性隱藏子窗口時,需要重載此過程,並且不執行任何繼承代碼,否則將報錯}

//inherited; 不能執行此語句!

end;

b) 隱藏或顯示子窗口

ChildForm.Visible:=false;//隱藏子窗口

ChildForm.Visible:=true; //顯示子窗口

說明:直接使用組件屬性隱藏或顯示子窗口,子窗口的Visible屬性和其顯示狀態是一至的。筆者認爲這樣做要安全一些。

 
玩轉FlashGet:高級應用技巧三則
玩轉FlashGet:高級應用技巧三則
  文/鄒浩浩  FlashGet這款軟件已經占據了絕大多數用戶的電腦了,但許多用戶只會這樣做:點右鍵→使用網際快車下載。可是,還有三個十分有用的功能,大家用過嗎?   第一功能:使用網際快車下載全部鏈接  大...查看完整版>>玩轉FlashGet:高級應用技巧三則
 
Google實用查資料高級搜索技巧三則
  雖然現在不少朋友都懂得利用搜索引擎來查找資料,但效率卻不盡相同,其原因就在是否掌握了所需的搜索技巧和搜索知識。爲幫忙更多的初學者能迅速掌握更靈活的搜索方法,在此我把體會到的搜索技巧與大家一起分享。...查看完整版>>Google實用查資料高級搜索技巧三則
 
在delphi中,如何把MDI工作區的粗邊框去掉
最近在考慮MIS系統界面的整體框架,決定使用MDI Form+模塊中的MDI Child,但是MDI form的工作區總有討厭的粗邊。昨天下午從網上查到C++版本的解決方法,就花了點時間翻譯成delphi的,呵呵,供大家參考。在MDI Form中...查看完整版>>在delphi中,如何把MDI工作區的粗邊框去掉
 
WPS文字處理微技巧三則-金山系列
WPS文字處理微技巧三則-金山系列
  WPS是大家經常用的文字處理工具,在進行文字編輯過程中,講點技巧就能事半功倍。下面我們爲大家整理了三則WPS文字處理技巧,希望對大家有所幫助。  1、用A4紙排版的文檔,要打印在16開紙上,重新排版太麻煩,要...查看完整版>>WPS文字處理微技巧三則-金山系列
 
Windows 7系統三則常見故障排除技巧-Windows7
  Windows 7與之前的WinXP一樣,安裝了應用軟件之後常會出現一些稀奇古怪的問題,下面列出Win7使用過程中三個常見故障及其解決辦法,希望能幫助大家用好Win7!  一、按Win鍵+E打不開資源管理器  如果你在Win7中...查看完整版>>Windows 7系統三則常見故障排除技巧-Windows7