工具栏中的按钮mousemove信息如何发送到状态栏panels(2)中

antony521 2014-03-28 07:45:47
程序主界面是顶层表单,创建了一个工具栏类(包括几个按钮),类中添加一个用于保存父表单对象的属性(oMainform),请问如何在类中的按钮mousemove事件中调用父表单控件的事件?
**************************************************
*-- 类: mytoolbar (h:\users\ant\desktop\工具栏与状态栏沟通试验\myvcx.vcx)
*-- 父类: toolbar
*-- 基类: toolbar
*-- 时间戳: 03/28/14 07:27:10 PM
*
DEFINE CLASS mytoolbar AS toolbar


Caption = "Toolbar1"
Height = 31
Left = 0
Top = 0
Width = 117
ShowWindow = 1
omainform = .F.
Name = "mytoolbar"


ADD OBJECT command1 AS commandbutton WITH ;
AutoSize = .T., ;
Top = 3, ;
Left = 5, ;
Height = 25, ;
Width = 54, ;
Caption = "代图标1", ;
Name = "Command1"


ADD OBJECT command2 AS commandbutton WITH ;
AutoSize = .T., ;
Top = 3, ;
Left = 58, ;
Height = 25, ;
Width = 54, ;
Caption = "代图标2", ;
Name = "Command2"


PROCEDURE Init
Parameter oform
This.omainform=oform &&通过omainform属性来引用父表单上所有一切。
ENDPROC


PROCEDURE command1.Click
*!* do form forms\frm销售管理
ENDPROC


PROCEDURE command1.MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
oMainForm.statusbar.panels(2).text="对商品的销售信息进行管理"
ENDPROC


PROCEDURE command2.Click
*!* do form forms\frm订单
ENDPROC


PROCEDURE command2.MouseMove
LPARAMETERS nButton, nShift, nXCoord, nYCoord
oMainForm.statusbar.panels(2).text="增加、修改、删除商品信息"
ENDPROC


ENDDEFINE
*
*-- EndDefine: mytoolbar
**************************************************


PUBLIC oform1

oform1=NEWOBJECT("form1")
oform1.Show
RETURN


**************************************************
*-- Form: form1 (h:\users\ant\desktop\工具栏与状态栏沟通试验\mainform.scx)
*-- 父类: form
*-- 基类: form
*-- 时间戳: 03/28/14 07:23:00 PM
*
DEFINE CLASS form1 AS form


Top = 0
Left = 0
Height = 609
Width = 1007
ShowWindow = 2
DoCreate = .T.
Caption = "Form1"
toptoolbar = .F.
Name = "Form1"


ADD OBJECT statusbar AS olecontrol WITH ;
Top = 581, ;
Left = 0, ;
Height = 28, ;
Width = 1007, ;
Align = 2, ;
Name = "statusbar"


PROCEDURE Activate
This.TopToolBar = NewObject("MyToolBar","MyVcx") &&CreateObject
This.TopToolBar.show()
This.TopToolBar.dock(0)
ENDPROC


PROCEDURE Init
SET DEFAULT TO SYS(5)+SYS(2003)
ENDPROC


ENDDEFINE
*
*-- EndDefine: form1
**************************************************

oMainForm.statusbar.panels(2).text=" ……" 就这两句代码。
mousemove代码部分显示错误:找不到对象omainform。
请名位高手帮忙指教一下,应该怎样改才能在状态栏panels(2)中正确显示出来。
我的系统是win7+VFP9 SP2 7423
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
antony521 2014-03-29
  • 打赏
  • 举报
回复
采用十豆三7楼的方法,OK! This.TopToolBar = NewObject("MyToolBar","MyToolBar",null,thisform) 学习了,谢谢!
十豆三 2014-03-29
  • 打赏
  • 举报
回复
我5楼是一种方法,下面是改造你的方法 1、将类中的 oMainForm.statusbar.panels(2).text="对商品的销售信息进行管理" 改为 thisform.oMainForm.statusbar.panels(2).text="对商品的销售信息进行管理" 2、表单中的 This.TopToolBar = NewObject("MyToolBar","MyToolBar") &&CreateObject 改为 This.TopToolBar = NewObject("MyToolBar","MyToolBar",null,thisform) &&CreateObject
十豆三 2014-03-29
  • 打赏
  • 举报
回复
引用 3 楼 antony521 的回复:
怎么没有人注意到 PROCEDURE Init Parameter oform This.omainform=oform &&通过omainform属性来引用父表单上所有一切。 ENDPROC 我是想知道参数oform是怎样得到主表单名的,也就是主表单要怎样传递参数给工具栏类.
你这是要传给类的,所以要在创建类时传入
十豆三 2014-03-29
  • 打赏
  • 举报
回复
类修改一下: 1、去掉: PROCEDURE Init Parameter oform This.omainform=oform &&通过omainform属性来引用父表单上所有一切。 ENDPROC 2、将 oMainForm 改为 oform1 也就是你表单运行时要这样 Public oform1 do form mainform.scx name oform1
antony521 2014-03-29
  • 打赏
  • 举报
回复
试了do form mainform name mainform 不行
antony521 2014-03-29
  • 打赏
  • 举报
回复
怎么没有人注意到 PROCEDURE Init Parameter oform This.omainform=oform &&通过omainform属性来引用父表单上所有一切。 ENDPROC 我是想知道参数oform是怎样得到主表单名的,也就是主表单要怎样传递参数给工具栏类.
lygcw9602 2014-03-28
  • 打赏
  • 举报
回复
DESTORY 改为 DESTROY
lygcw9602 2014-03-28
  • 打赏
  • 举报
回复
在工具栏所在表单的LOAD事件中 PUBLIC oMainForm 在工具栏所在表单的DESTORY/UNLOAD事件中 RELEASE oMainForm

2,726

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧