标题:在VFP中定制自己的工具栏
只看楼主
btchongzi
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-8-22
 问题点数:0 回复次数:5 
在VFP中定制自己的工具栏

*----以下为我在网上找到的制作工具栏的方法,希望对有和我遇到相同问题的人有所帮助(文章作者不祥,下载于梅子论坛)----*

在VFP中定制自己的工具栏
在用Visual Foxpro(简称VFP)进行应用程序开发时,你一定被它那功能强大、漂亮简捷的工具栏所吸引,陶醉着有一天在应用程序中也加入自己的工具栏。其实这对VFP来说并非难事,请君往下看:?
1?定义工具栏类?
要创建自定义工具栏,必须首先为它定义一个类。VFP提供了一个工具栏基类,在此基础上,你可以创建自己的工具栏类。创建工具栏类有以下几种方法:?
*在“文件”菜单中选择“新建”命令,选择类;?
*单击VFP常用工具栏中的“新建”图标在“项目管理器”中,单击“新建”按钮选择类;?
*利用Create Class或Modify Class命令。?
你可以选择以上任何一种方法,之后会弹出一个“新类”对话框。在“类名”框中,键入工具栏类的名称;从“派生于”下拉框中选择“ToolBar”,这时VFP提供的工具栏基类,你也可以单击三点按钮选择其他工具栏基类;在“存储于”框中键入类库名,保存创建的新类或单击三点按钮选择已有的类库保存。单击“确定”后进入类设计器。?2?在新建的工具栏中添加对象创建好了一个自定义工具栏以后,便可以在其中添加对象,只要是VFP支持的对象就可以。我们利用“表单控制”工具栏添加对象。?
若“表单控制”工具栏未出现在系统工具栏中,请在系统的工具栏上方单击鼠标右键,弹出一个菜单后选择“表单控制”;另一个方法是在系统的“查看”菜单中选择“工具栏”,然后选择“表单控制”后确定。
用鼠标单击“表单控制”工具栏中的“CommandGroup”,移动鼠标光标至自定义工具栏内,这时光标变为十字光标,单击鼠标左键。工具栏内出现一个带两个命令按钮的命令按钮组,用同样的方法也可以在工具栏内加入其他对象。接下来的就是修改对象的属性了。对象的属性有很多,下面列出比较重要的、常用的几个属性。?
Width属性可以设置对象的大小;?
Picture属性指定对象上的图标;?
DisabledPicture属性指定按钮处于非激活状态时的图标;?
DownPicture属性指定在按钮被按下时显示的图标;?
ToolTipText属性指定当鼠标移到按钮上方时所显示的提示信息。?
3?设置工具栏的属性及方法?
在工具栏中添加完对象以后,可以设置工具栏的属性和方法。工具栏有28个属性,30个方法,下面着重说明比较常用的几个属性和方法。?
Caption指定工具栏的标题;?
ControlBox指定工具栏在运行时刻是否包含控制菜单框;?
Moveable指定在运行时刻用户是否可以移动工具栏;?
Name指定工具栏的名称;?
ShowTips确定是否显示工具栏中控制的提示;?
Sizeable指定在运行时用户是否可以调整工具栏的大小;?
Dock方法可以停放或移出工具栏;?
AfterDockEvent方法指定在控制工具栏停放后发生的动作;?
BeforeDockEvent方法指定在控制工具栏停放前发生的动作。?
工具栏的属性和方法还有很多,你可以在使用中细细研磨。?
4?将工具栏加到自己的程序中?
工具栏设计好以后,如何将其加到自己的程序中呢?我们可将设计好的工具栏放到我们的表单集中。向表单集中添加工具栏有两种方法:一是利用表单设计器;再就是利用程序代码。?
(1)利用表单设计器?
首先将所建的工具栏类加到自己的项目中。打开要使用此工具栏的表单集,在“表单控制”工具栏中单击“查看类”,在列表中单击“添加”,选择工具栏类,然后再次单击“查看类”,从显示的列表中选择该工具栏类。从“控制”工具栏中选择工具栏类,在表单上单击添加此工具栏,然后将其拖动到适当的位置。将工具栏加到表单集中以后,就可以为其按钮定义操作了,其实你可在类设计器中就为按钮定义其操作,这两者的结果是一样的。?
VFP只在表单集中添加工具栏,如果表单集尚未打开,VFP将提示你打开一个。?
(2)利用程序代码?
除了使用“表单设计器”以外,还可以使用程序代码在表单集中添加工具栏。若要使用程序代码在表单集中添加工具栏,可以在表单集的Init事件中使用如下命令:?
SET CLASSLIB TO工具栏类?
THIS?ADDOBJECT(’工具栏类库名’,’工具栏类名’)?

[此贴子已经被作者于2006-9-13 8:35:44编辑过]

搜索更多相关主题的帖子: VFP 工具 定制 
2006-09-11 10:42
btchongzi
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-8-22
得分:0 

*------另外还找到以下文章(文章作者不祥,下载于梅子论坛)-------*

设计窗体工具箱的两种方法

  1.窗体工具箱的组成原理:
  工具箱是由一个工具箱窗体、若干个图形按钮和分隔符组成。
  2.窗体工具箱的设计思路:
  先通过定义一个基于ToolBar的类,然后再向类中加入命令按钮、组合框和用于各按钮之间起分隔作用的分隔符等控件组成一个工具箱。通过调用Dock和Show方法将工具箱显示在窗体指定的位置上。
  (1)Dock方法:将工具箱置于窗体指定的位置上。
  语法:ToolBar.Dock(nLocation [, X, Y])
  参数说明:
  nLocation 工具箱停留在窗体特定的位置上。
  具体值 说 明
  -1 产生工具箱窗体
  0 窗体的上部
  1 窗体的左边
  2 窗体的右边
  3 窗体的底部
  X, Y 工具箱停留在指定水平和垂直坐标的位置上。(2)Show方法:显示工具箱
  语法: ToolBar.Show
  (3)定义类的语句:
  define class formcombo as combobox&&定义组合框类
   控件的属性赋值语句或加入控件语句
   proc &&控件事件的处理过程
   ·
   ·
   ·
   endproc
  enddefine

  方法一:用类设计器设计窗体工具箱

  (1)创建一个新类,其基类是“ToolBar”,类名为“TB”,存储于“MYCLASS”类库中。
  (2)进入类设计器后,用鼠标点按控件箱的CommandButton(命令按钮)控件,将其加入ToolBar中,点按鼠标右键,选择“属性”,修改属性值(参照方法二中实例程序的属性设置);用同样的方法将多个CommandButton(命令按钮)、组合框和分隔符控件加入其中。
  (3)显示窗体工具箱实例程序TOOLBAR.PRG
  clea
  close all
  set classlib to myclass
  tbs=createobject(″tb″)
  tbs.dock(0)
  tbs.show
  close all
  retu
  (4)将工具箱从窗体中消去:
  release tbs
  方法二:用编程方式实现窗体工具箱实例程序
  TOOLBARS.PRG
  public itoolbar
  #define button—height 22 &&预定义按钮的高和宽
  #define button—width 22
  itoolbar=create('mytoolbar') &&创建对象
  itoolbar.dock[0] &&使工具箱停留在窗体的上部
  itoolbar.show &&显示工具箱
  define class formcombo as combobox &&定义组合框类
  caption='' &&设置组合框属性
   columncount=2
   dragmode=1
   width=70
   height=button—height
  proc dragdrop
  para oNewSource,newcurrents,newcurrenty,newstate
  =messagebox(″您已按下″+oNewSource.tooltiptext+″按钮!″,″提示″)
  endproc
  enddefine
  define class formbutton as commandbutton &&定义命令按钮类
   autocenter=.t. &&设置命令按钮属性
   caption=''
   dragmode=1
   width=button—width
   height=button—height
  proc dragdrop
  para oNewSource,newcurrents,newcurrenty,newstate
  =messagebox(″您已按下″+oNewSource.tooltiptext+″按钮!″,″提示″)
  endproc
  enddefine
  define class mytoolbar as toolbar &&定义工具箱类
   add object combo1 as formcombo with tooltiptext=″数据库″
   add object separator1 as separator
   add object button1 as formbutton with picture=″c:\vfp50\wizards\wizbmps\wzlocate.bmp″,;
  tooltiptext=″定位″
   add object button2 as formbutton with picture=″c:\vfp50\wizards\wizbmps\wzedit.bmp″,;
  tooltiptext=″修改″
   add object separator2 as separator
   add object button3 as formbutton with picture=″c:\vfp50\wizards\wizbmps\wzdelete.bmp″,;
  tooltiptext=″删除″
   add object button4 as formbutton with picture=″c:\vfp50\wizards\wizbmps\wzprint.bmp″,;
  tooltiptext=″打印″
   add object button5 as formbutton with picture=″c:\vfp50\wizards\wizbmps\wzclose.bmp″,;
  tooltiptext=″退出″
  proc destroy
   this.visible=.f.
  endproc
  enddefine
  以上程序在同创P/120、Windows 95、Visual FoxPro 5.0中文版软硬件环境下运行通过。


[此贴子已经被作者于2006-9-13 8:36:10编辑过]

2006-09-11 15:20
fown
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:58
帖 子:1229
专家分:171
注 册:2005-5-26
得分:0 
下次转进注明贴子的作者以及出处,明白?

有人说VFP不行了,我想说,你连VFP十分之一的功能都不会用,你怎么知道VFP不行?本人拒绝回答学生的问题我回答问题一般情况下只提供思路不提供代码,请理解
2006-09-12 19:09
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
得分:0 
呵呵,他已经在开头的地方注明了。可能内容太多,您老看花眼了吧?大家有则改之,无则加勉就是了。

两人行已有我师……
2006-09-13 10:15
btchongzi
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-8-22
得分:0 
是后来加的
2006-09-13 11:12
zero07
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2006-5-10
得分:0 

2006-09-13 15:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-89308-1-1.html




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

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