[轉(zhuǎn)帖]如何將工具欄建立在當前表單中
你是否一直在思考著要在自己制定的表單上方一個“工具欄”?那么你跟著我來吧,保證你收獲不少。當然如果你有更好的使用經(jīng)驗可不要忘了告訴我!
******************
首先當然是創(chuàng)建工具欄的可視類了,至于是怎么創(chuàng)建,好像很多的資料中有說明,我就省得長篇大論的說了。如果你確實不明白,那么可以參考我已經(jīng)創(chuàng)建的工具欄可視類(ToolBar.Vcx)。創(chuàng)建完成了,可要記得你所自定義的工具欄的類名(像我的就是“MyToolBar”)哦,以下可是會要用到的!
指定工具欄類的“ShowWindow=1”(必須的,否則的話工具欄會??吭赩F的主窗口中)
還有,最重要的一點,你要在這個工具欄的可視類中添加一個新的用于保存父表單對象的屬性(oMianform),通過該屬性來引用父表單上所有一切。當然如果你的工具欄上的所有控件地方法并沒有引用父表單的方法和屬性,你大可不必創(chuàng)建該屬性。不過這種情況應(yīng)該很少吧!
在工具欄類的“Init”事件中寫下如下代碼:
——————————————————
Parameter oform
This.omainform=oform
——————————————————
******************
再來談?wù)?#8220;表單”的問題:
要使表單能夠放一個工具欄,該表單就必須具有“特殊”的屬性(并不是任何一個簡單的表單都可以放置工具欄),該表單必須具備該屬性:ShowWindow=2(也就是該表單為頂層表單)
******************
再接下了,就是最重要的調(diào)用環(huán)節(jié)了。
如果你在進行表單設(shè)計時,想通過添加其它的的可視類的方法往表單中添加你所自定義工具欄類,那么VF就會提示你是否在當前的表單中是否再添加一個新的表單(也就是將當前的表單對象變?yōu)橐粋€表單集的成員),我勸你不要這么做了,因為這根本就行不通,且不說不好控制,關(guān)鍵是你所定義的工具欄不會停放在你所指定的表單中(它如果“Dock”的話,會停放到VF的主窗口中)。怎么解決了,用如下的辦法吧:
1、在你的表單中增加一個新的屬性(oToolbar),該屬性主要用于存儲工具欄對象;
2、在表單的“Activate”事件中添加如下的代碼:
——————————————————
showtoolbar=Vartype(Thisform.otoolbar)
If showtoolbar#"O" And showtoolbar#"X" &&判斷工具欄對象是否創(chuàng)建并且不是被釋放了
Set Classlib To Toolbar Additive &&這里的“Toolbar”是存放工具欄可視類的類庫文件名
This.otoolbar=Createobject("MyToolBar",This) &&這里的“MyToolBar”是你定義的工具欄類名
This.otoolbar.Show &&顯示工具欄
This.otoolbar.Dock(0) &&將工具欄停放至窗口的頂端
Release Classlib Toolbar &&釋放類庫文件
Endif