| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:[求助]如何设置顶层表单的工具栏
只看楼主 加入收藏
wls352101
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-4-8
收藏
 问题点数:0 回复次数:0 
[求助]如何设置顶层表单的工具栏

如何设置顶层表单的工具条


我做的工具条,为何一直躲到顶层表单的后面,我参考了网上的一些设置,有几点不明白,忘大家赐教,不盛感激!
其中这几句话一直不明白什么意思:
This.TopToolBar=NewObject("MyToolBar","MyVcx")
This.TopToolBar.show()
This.TopToolBar.dock(0)

我的工具条名称是:工具条.vcx,请问该如体设置上面的代码。附:我在网络上找的代码:


VFP教程:如何制作自定义工具栏2006-12-30 04:421、建立的方法
(1)建立新类别。在命令窗口中执行CREATE CLASS命令后,在新建类窗口中键入类别及类别库的名称.
(2)加入按钮对象。当进入类设计器时会发现Toolbar的窗口很小,因此你要仔细的建立按钮,按下工

具栏中的按钮,再在类设计器中的工具栏内单击鼠标左键,以加入一个按钮到该自定义工具栏中,并修

改按钮的特性为:
Caption=''
Picture=Top1.bmp
如果发现图形不能完全显示,表示图形太大可以修改成小一点的图形或将按钮拉大,如果要在按钮之间

加入空格,请按下按钮,并在按钮之间按下。
(3)编写按钮的事件过程。就是对每个按钮编写各自的Click过程,这与表单中按钮的Click事件建立过

程一样。
(4)保存。按下Ctrl+W将该类别保存到LIBS.VCX类别库中。
2、类别的应用
此类别是一个Toolbar,而Toolbar事实上也是表格的一种,只是某些特性与表格不同,因此,如果显示

数据的画面也是一个表格,便不能将其加入到数据显示表格中,因此我们要建立一个更大的对象以便同

时加入表格和工具栏,此对象便是Formset。
(1)建立新表格。在命令窗口中执行:CREATE FORM
(2)建立表格集。请选定表单菜单中的创建表格集选项。
(3)建立工具栏对象。对于工具栏不是直接以视觉化方式加入到表格集中的,而是通过程序建立,在

Formset的ini事件中编写如下程序:
SET CLASSLIB TO libs ADDITIVE
This.AddObject('mybar','move_rec')
This.mybar.show
This.mybar.dock(0)??
关于dock()函数的说明:
值 常量 说明
-1 TOOL_NOTDOCKED 不停放工具栏。
0 TOOL_TOP 在 Visual FoxPro 主窗口的顶部停放工具栏。
1 TOOL_LEFT 在 Visual FoxPro 主窗口的左边停放工具栏。
2 TOOL_RIGHT 在 Visual FoxPro 主窗口的右边停放工具栏。
3 TOOL_BOTTOM 在 Visual FoxPro 主窗口的底部停放工具栏。
(4)执行。在执行表单的同时工具栏会被自动打开.
THE NEXT WAY:
1、自定义属性可以变成对象;

2、对象可以象普通变量一样被传递到其他对象或其他对象的属性中,接收该对象变量的属性将变为对象

3、源对象如果未被释放,将和接收被传递对象的属性变成的对象一模一样。也就是说,我们等于在目标

属性上插入了一个源对象的链接。

我们先看第二条,对象可以被象普通变量一样被传递。

在上一篇中我专门讨论了“对象也是一种变量”的观点,只有理解了这一点,才能够接受传递对象的理

论——是变量那么当然可以被传递了。实际上,对象变量被传递的方式更类似于传递数组,带着属性就

好象数组的子集,也是一种变量!

没错,这就是我要证明的第二点:属性也是变量!

尤其是自定义属性,正因为其变量的本质,所以:属性也可以象变量一样被改变数据类型!

正如我们在《VFP6中的_Assign方法》一文中所看到的,一个表单的自定义属性,原来是逻辑型数据的,

在将该属性指定为一个对象变量的名称以后,它的数据类型变成了对象型“O”,而且竟然也有了自己的

属性!

属性的属性——不太好理解吧?其实,根本没什么属性的属性。原来的那个属性,现在已经变成了一个

不折不扣的对象。是对象,当然可以有自己的属性了。而且,要注意的是:这个对象跟源对象是一模一

样的——不止是一模一样,其实根本就是一个对象。

比如说:现在有表单A和B,A上带有一个Custom对象AOC;B有一个属性RcvAoc。现在我们从A表单向B表单

传递AOC对象:

DO form B with thisform.AOC
thisform.hide

在B的INIT事件中接收AOC对象变量,并将它赋值给属性RcvAoc:

LParameters tmprcv
thisform.RcvAoc=tmprcv

这时,B表单的RcvAoc属性变成了一个与A表单的AOC对象除了名字外一模一样的对象,你可以用调试器的

局部窗口观察一下。

从这时开始,我们对RcvAoc做的修改会反应在AOC上,而在AOC上做的修改也会反应在RcvAoc上。看到这

里,你也许会脱口而出:这不是链接嘛!

没错,这就是我想证明的第三点:这种属性接收对象的传递变换,其实质是对象的链接。

一口气谈了那么多理论问题,你也许有点烦了:这看来有趣,但有什么用呢?别急,下面,我们就用这

个理论来解决一个困扰我们多久的实际问题:给顶层表单添加工具栏。

顶层表单有些特殊性,是因为它的“顶层”的缘故。

用普通的建立工具栏的方法给顶层表单添加工具栏,会发现工具栏不能正常显示。事实上,工具栏被顶

层表单挡在后面了,即使你把顶层表单的SHOWWINDOW属性设置为“最上层表单”、把AlwaysOnTop属性设

置为.T.也没用。这是因为工具栏是一种特殊的表单,而在VFP中除了应用程序对象_VFP和_SCREEN对象,

没有其它任何表单的层级比顶层表单高。

有的朋友就此认为顶层表单无法添加工具栏,因而放弃了使用顶层表单而用“古老”的屏幕。其实,顶

层表单还是可以有工具栏的。

要给顶层表单程序添加工具栏,必须把工具栏做在顶层表单本身上,也就是说:要做成TOPFORM.ToolBar

的形式。

下面是我参考有关书籍和《VFP6中的_Assign方法》一文找到的解决办法:

1.在类库MyVcx中建立一个工具栏类MyToolBar,将工具栏的ShowWindow属性设置为1——最上层表单;

2.给顶层表单添加一个自定义属性TopToolBar;

3.编辑顶层表单的Activate event,输入以下代码:

This.TopToolBar=NewObject("MyToolBar","MyVcx")
This.TopToolBar.show()
This.TopToolBar.dock(0)

现在,你就可以享受顶层表单的工具栏了!

以上只是应用三条原则中的第一条“属性可以变成对象”而已。用这三条金钥匙、发挥你的想象力,你

可以作出更漂亮的魔术


如何制作自定义工具栏
1、建立的方法
(1)建立新类别。在命令窗口中执行CREATE CLASS命令后,在新建类窗口中键入类别及类别库的名称,如

下图:

(2)加入按钮对象。当进入类设计器时会发现Toolbar的窗口很小,因此你要仔细的建立按钮,如下图

按下工具栏中的按钮,再在类设计器中的工具栏内单击鼠标左键,以加入一个按钮到该自定义工具栏中

,并修改按钮的特性为:
Caption=''
Picture=Top1.bmp
如果发现图形不能完全显示,表示图形太大可以修改成小一点的图形或将按钮拉大,如果要在按钮之间

加入空格,请按下按钮,并在按钮之间按下。
(3)编写按钮的事件过程。就是对每个按钮编写各自的Click过程,这与表单中按钮的Click事件建立过

程一样。
(4)保存。按下Ctrl+W将该类别保存到LIBS.VCX类别库中。
2、类别的应用
此类别是一个Toolbar,而Toolbar事实上也是表格的一种,只是某些特性与表格不同,因此,如果显示

数据的画面也是一个表格,便不能将其加入到数据显示表格中,因此我们要建立一个更大的对象以便同

时加入表格和工具栏,此对象便是Formset。
(1)建立新表格。在命令窗口中执行:CREATE FORM
(2)建立表格集。请选定表单菜单中的创建表格集选项。
(3)建立工具栏对象。对于工具栏不是直接以视觉化方式加入到表格集中的,而是通过程序建立,在

Formset的ini事件中编写如下程序:
SET CLASSLIB TO libs ADDITIVE
This.AddObject('mybar','move_rec')
This.mybar.show
This.mybar.dock(0)??
关于dock()函数的说明:
值 常量 说明
-1 TOOL_NOTDOCKED 不停放工具栏。
0 TOOL_TOP 在 Visual FoxPro 主窗口的顶部停放工具栏。
1 TOOL_LEFT 在 Visual FoxPro 主窗口的左边停放工具栏。
2 TOOL_RIGHT 在 Visual FoxPro 主窗口的右边停放工具栏。
3 TOOL_BOTTOM 在 Visual FoxPro 主窗口的底部停放工具栏。
(4)执行。在执行表单的同时工具栏会被自动打开,如下图:

搜索更多相关主题的帖子: 工具栏 表单 网络 顶层 This 
2007-10-19 23:26
快速回复:[求助]如何设置顶层表单的工具栏
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029450 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved