设置首页  |   加入收藏  |  联系我们   
您的位置: 主页>程序设计>VFP>正文
在VFP中实现菜单、表单与工具条的动态连接
文章来源:  编辑:  发布时间:2007-12-12

  用VFP构建应用程序时,往往通过主菜单调用表单完成相应功能模块,其实我们可以像WORD打开文档一样将每一个打开的表单显示在Window菜单上,以便于切换。具体步骤如下:
  1. 创建一表单类MyForm,新建向菜单项Window追加、删除表单名的方法:AddFormNameToMenu、RemoveFormNamefromMenu,同时修改init、activate、destroy方法。
  2. 设置表单类MyForm为新建表单的模板类即可。
  二、 表单与工具条的连接。
  在应用系统中对表单的操作往往有很多相同之处,所以我们可以针对多个表单使用一个工具条,以节省表单空间。具体步骤如下:
  1. 利用工具条基类ToolBar创建一工具条类MyTBR,然后向工具条中添加命令按钮,在每个按钮的click事件中调用激活表单中的相应方法,例如:_screen.activateform.first()。由于每个表单的方法可写入不同的代码,从而实现用一个工具条控制不同的表单及操作。
  2. 创建应用程序类MyAPP,添加属性nFormInstanceCount、oToolBar,其初始值分别为0、NULL。新建显示、隐藏工具条的方法:ShowAppToolBar、RemoveAppToolBar。在主程序中建立MyAPP实例:oAPP=createobject (′MyAPP′)
  3. 修改表单类MyForm,添加属性cToolbar,其初始值为MyTBR;添加相应方法(例如first)。同时修改init、destroy方法。
  三、 源代码
  AddFormNameToMenu()
  if cntbar(′window′)=0 or getbar(′window′,cntbar(′window′))<0
  nNoMenu=cntbar(′window′)+1
  else
  nNoMenu=getbar(′window′,cntbar(′window′))+1
  endif
  define bar nNoMenu of window prompt thisform.caption;
  after _mlast
  cNameform=thisform.name
  on selection bar nNoMenu of window activate window &cNameform
  RemoveFormNamefromMenu()
  local nBar,cCaption
  for nBar=cntbar(′window′) to 1 step -1
  if prmbar(′window′,getbar(′window′,nBar))=this.caption
  release bar getbar(′window′,nBar) of window
  exit
  endif
  endfor
  Init()   local nNomenu,cNameform
  if !empty(thisform.cToolbar)
  thisform.Addformnametomenu()
  oAPP.showapptoolbar(thisform.cToolbar)
  endif
  Activate()
  activate menu _msysmenu nowait
  Destroy()
  if !empty(thisform.cToolbar)
  thisform.removeformnamefrommenu()
  oAPP.removeapptoolbar()
  endif
  ShowAppToolBar()
  lpara tcToolBar
  if this.nforminstancecount=0 or isnull(oAPP.oToolbar)
  set sysmenu on
  set classlib to basetbr
  this.oToolbar=createobject(′MyTBR′)
  this.oToolbar.show()
  activate menu _msysmenu nowait
  set sysmenu automatic
  endif
  this.nforminstancecount=this.nforminstancecount+1
  RemoveAppToolBar()
  this.nforminstancecount=this.nforminstancecount-1
  if this.nforminstancecount=0
  this.otoolbar=.NULL.
  endif
本文来源: 软件报          本文作者: 刘露军


Tags:动态 连接 工具 实现 菜单 表单 window 方法 endif if

Google
 
上一篇: TreeView控件在财务软件设计中的应用   下一篇: 定义自己的右键快捷菜单
【返回顶部】 【打印】 【大】 【中】 【小】 【关闭】

 我来说两句
用户名: 新注册) 密码: 匿名评论 [论坛讨论]
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 相关文章
 热门文章

 
版权所有  2005-2006  Linux集中营  闽ICP备07500055号