1、1Delphi編程資料精華匯總標(biāo)題:父窗體fsmDIFm子窗體fsMDIChild內(nèi)容:設(shè)置父窗體Fmstyle為fsmDIFm子窗體為fsMDIChild1.如果你需要你的子窗體就是設(shè)計(jì)時(shí)的那個(gè)子窗體,用Application.CreateFm(TFmChildFmChild)創(chuàng)建該子窗體,則再使用FmChild.Close時(shí)應(yīng)該不會(huì)報(bào)錯(cuò)。2.MDI子窗體的默認(rèn)關(guān)閉操作為最小化,想讓它真正關(guān)閉,在其OnClose中寫(xiě)Action:=c
2、aFree3.如果你的子窗體只是用TFmChild類創(chuàng)建的實(shí)例(用TFmChild.Create(Application)或TFmChild.Create(self)創(chuàng)建的),則一般不能用FmChild來(lái)引用它(如它是全局變量等情況例外)。可以考慮以下幾個(gè)方法:關(guān)閉最早建立的實(shí)例MainFm.MDIChildren[MainFm.MDIChildCount1].close關(guān)閉最晚建立的實(shí)例MainFm.MDIChildren[0].cl
3、ose關(guān)閉當(dāng)前活動(dòng)實(shí)例MainFm.ActiveChild.close關(guān)閉所有子窗體fi:=0toMainFm.MDIChildCount1doMainFm.MDIChildren[i].closeDelphiMDI應(yīng)用程序高級(jí)技巧三則(一)2008072807:47本文介紹幾個(gè)DelphiMDI應(yīng)用程序的編程技巧,雖然純屬技巧,但是本文的方法在正常編程時(shí),通常會(huì)被編譯器認(rèn)為是錯(cuò)誤的或是違背編程環(huán)境缺省許可值的。不過(guò)有時(shí)為了一些特殊的用
4、途或特殊的視覺(jué)效果,按下述的方法一試,可以在明知不可違而違之的情況下,得到很好的結(jié)果。下述各示例均在Delphi6、Windows2000下完成,對(duì)涉及的控件命名是任意的,僅為方便說(shuō)明問(wèn)題。一、子窗口的隱藏在Delphi編程環(huán)境下,MDI子窗口在運(yùn)行期間可以動(dòng)態(tài)地被創(chuàng)建和銷毀,但是不能夠被隱藏,如果試圖通過(guò)Visible屬性或Hide方法隱藏子窗口,編譯器將報(bào)出“CannothideanMDIChildFm.”的錯(cuò)誤提示!如果某個(gè)子窗口
5、中承載了很多要保留的數(shù)據(jù)而不能銷毀,但又暫時(shí)不想要它出現(xiàn)在屏幕上時(shí),最好的方法就是將其隱藏,待需要時(shí)再將其顯示出來(lái)則可。下面兩種方法可以隱藏和顯示子窗口,并避開(kāi)了編譯器的報(bào)錯(cuò)提示。1)使用WindowsAPI函數(shù)ShowWindow(),示例代碼如下:ShowWindow(ChildFm.HleSW_HIDE)隱藏子窗口ShowWindow(ChildFm.HleSW_RESTE)顯示子窗口說(shuō)明:使用WindowsAPI直接隱藏子窗口,
6、其子窗口的Visible屬性和其顯示狀態(tài)是不一至的。當(dāng)子窗口不可見(jiàn)時(shí),其Visible屬性可能仍然是True。2)直接設(shè)置子窗口的Visible屬性此時(shí),首先要在需要隱藏的子窗口中重載TCustomFm的VisibleChanging方法,并在其實(shí)現(xiàn)過(guò)程中屏蔽掉繼承代碼,否則編譯器將在隱藏子窗口時(shí)報(bào)錯(cuò)。然后就可以直接設(shè)置這個(gè)子窗口的Visible屬性為False或True來(lái)隱藏或顯示它了。示例如下:a)子窗口部分…type3Delphi
7、:隱藏MDI子窗口帶來(lái)的問(wèn)題2008072808:43在delphi中隱藏MDI子窗口有兩種方法:1)發(fā)消息及調(diào)用ShowWindow函數(shù):showwindow(childfm.hlesw_hide)隱藏子窗口showwindow(childfm.hlesw_reste)顯示子窗口缺點(diǎn):使用windowsapi直接隱藏子窗口,其子窗口的visible屬性和其顯示狀態(tài)是不一至的。當(dāng)子窗口不可見(jiàn)時(shí),其visible屬性可能仍然是true。2
8、)重載子窗口的visiblechanging方法:privateprocedurevisiblechangingoverride重載proceduretchildfm.visiblechangingbegininherited不能執(zhí)行此語(yǔ)句!end此后就可以直接設(shè)置visible屬性了:childfm.visible:=false隱藏子窗口childfm.visible:=true顯示子窗口缺點(diǎn):當(dāng)子窗口隱藏了后,有些控件的數(shù)據(jù)沒(méi)有辦法
9、取到,如TListView為這個(gè)問(wèn)題曾經(jīng)郁悶了很久,不知道是什么原因。例如:子窗口上listview已經(jīng)有了10行數(shù)據(jù),當(dāng)利用方法2)把使得子窗口不可見(jiàn)了后,調(diào)用childfm.listview.items.count結(jié)果總是0,但是顯示此子窗口后10行數(shù)據(jù)還是在此listview中。所以使用1),在程序中不要調(diào)用visible屬性。使用2),在子窗口隱藏了后不要去取該子窗口的數(shù)據(jù)。delphi怎么讓限制MDI子窗口重復(fù)打開(kāi)200807
10、2809:18delphi怎么讓限制MDI子窗口重復(fù)打開(kāi)delphi怎么讓限制MDI子窗口重復(fù)打開(kāi)beginifNotassigned(fm2)thenbeginApplication.CreateFm(TFm2Fm2)endelsebeginfm2.Showendend這個(gè)到是可以顯示重復(fù)打開(kāi)但是我關(guān)閉改子窗體后再打開(kāi)就沒(méi)出錯(cuò)拉解決拉在FM2關(guān)閉的時(shí)候先釋放資源在賦空值action:=cafreefm2:=nilDelphi中實(shí)現(xiàn)中實(shí)
評(píng)論
0/150
提交評(píng)論