vfp中的工具栏实现方法,从网上搜集而来的

来源:百度文库 编辑:神马文学网 时间:2024/04/27 15:47:50
[转帖]如何将工具栏建立在当前表单中

你是否一直在思考着要在自己制定的表单上方一个“工具栏”?那么你跟着我来吧,保证你收获不少。当然如果你有更好的使用经验可不要忘了告诉我!

******************
首先当然是创建工具栏的可视类了,至于是怎么创建,好像很多的资料中有说明,我就省得长篇大论的说了。如果你确实不明白,那么可以参考我已经创建的工具栏可视类(ToolBar.Vcx)。创建完成了,可要记得你所自定义的工具栏的类名(像我的就是“MyToolBar”)哦,以下可是会要用到的!
指定工具栏类的“ShowWindow=1”(必须的,否则的话工具栏会停靠在VF的主窗口中)
还有,最重要的一点,你要在这个工具栏的可视类中添加一个新的用于保存父表单对象的属性(oMianform),通过该属性来引用父表单上所有一切。当然如果你的工具栏上的所有控件地方法并没有引用父表单的方法和属性,你大可不必创建该属性。不过这种情况应该很少吧!
在工具栏类的“Init”事件中写下如下代码:
——————————————————
Parameter oform
This.omainform=oform
——————————————————

******************
再来谈谈“表单”的问题:
要使表单能够放一个工具栏,该表单就必须具有“特殊”的属性(并不是任何一个简单的表单都可以放置工具栏),该表单必须具备该属性:ShowWindow=2(也就是该表单为顶层表单)

******************
再接下了,就是最重要的调用环节了。
如果你在进行表单设计时,想通过添加其它的的可视类的方法往表单中添加你所自定义工具栏类,那么VF就会提示你是否在当前的表单中是否再添加一个新的表单(也就是将当前的表单对象变为一个表单集的成员),我劝你不要这么做了,因为这根本就行不通,且不说不好控制,关键是你所定义的工具栏不会停放在你所指定的表单中(它如果“Dock”的话,会停放到VF的主窗口中)。怎么解决了,用如下的办法吧:
1、在你的表单中增加一个新的属性(oToolbar),该属性主要用于存储工具栏对象;
2、在表单的“Activate”事件中添加如下的代码:
——————————————————
showtoolbar=Vartype(Thisform.otoolbar)
If showtoolbar#"O" And showtoolbar#"X" &&判断工具栏对象是否创建并且不是被释放了
Set Classlib To Toolbar Additive &&这里的“Toolbar”是存放工具栏可视类的类库文件名
This.otoolbar=Createobject("MyToolBar",This) &&这里的“MyToolBar”是你定义的工具栏类名
This.otoolbar.Show &&显示工具栏
This.otoolbar.Dock(0) &&将工具栏停放至窗口的顶端
Release Classlib Toolbar &&释放类库文件
Endif

http://www.wotaihao.ys168.com