关于右键菜单的写法

jack_wang0823 2013-12-29 10:47:43
关于右键菜单的使用有点疑问
我想在gridde TEXT1中用右键激活一个菜单,多所点击的栏位进行操作
代码如下
绑定事件 RIGHTCLICK 到 thisform.kqk_rightclick:
=BINDEVENT(ThisForm.Pageframe1.Page2.Grid1.Column4.text1,"rightclick",this,"kqk_rightclick" )

thisform.kqk_rightclick的代码

DEFINE POPUP kqk_right_pop RELATIVE FROM MROW(),MCOL() TITLE "请选择"
DEFINE BAR 1 OF kqk_right_pop prompt "直接补签此栏位"
DEFINE BAR 2 OF kqk_right_pop prompt "加入补签申请表"
DEFINE BAR 3 OF kqk_right_pop prompt "清除补签数据"
DEFINE BAR 4 OF kqk_right_pop prompt "清除签卡异常状态<迟到、早退>"
DEFINE BAR 5 OF kqk_right_pop prompt "恢复签卡异常状态<迟到、早退>"

ON SELECTION POPUP kqk_right_pop ;
wait window nowait BAR() &&&这里好像只能输入一行命令
ACTIVATE POPUP kqk_right_pop AT MROW(),MCOL()

得到的效果如下图


现在的问题是
1 这个效果很难看, 标题的字体如何更改
2.点选一个选项后, 菜单不会消失. 还在屏幕上,要在菜单外 点击2下才会消失
3. ON SELECTION POPUP 后面好像只能输入一行命令 不支持代码块, 处理代码应该写在 哪里(不使用外部PRG的情况下, 不想在这个表单文件以外在附加一PRG过程).
尝试过 如下方法
第一种
ON SELECTION POPUP kqk_right_pop ;
DO choice with bar()
....

proc choice
lpara _cur_sele
do case
case _cur_sele=1
.....
case _cur_sele=12
....
endcase

系统提示, 不能在方法里定义过程
第二种
thisform. choice with bar()
系统提示, 不能无效的参数传递
第三种
DO choice with bar()
编写 choice.prg 处理
这倒是可以使用但是, 到了PRG 里面, 表单的所有属性和方法都无法引用了....

请各位指点
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2013-12-30
  • 打赏
  • 举报
回复
*--然后在表单上建一个Command按钮,其Visible设为.F.,其Click事件代码: Parameters tnMenuID Do Case Case tnMenuID=1 Messagebox("你的相应代码1...",64,"信息提示") Case tnMenuID=2 Messagebox("你的相应代码2...",64,"信息提示") Case tnMenuID=3 Messagebox("你的相应代码3...",64,"信息提示") Case tnMenuID=4 Messagebox("你的相应代码4...",64,"信息提示") Endcase 这段代码中你可以写任意行代码。
十豆三 2013-12-30
  • 打赏
  • 举报
回复
请参考:
表单右键菜单例子代码
*-------------------

*--表单的Init事件代码:

Define Popup shortcut shortcut Relative From Mrow(),Mcol()
Define Bar 1 Of shortcut Prompt "    <关闭菜单>    "
Define Bar 2 Of shortcut Prompt "\-"
Define Bar 3 Of shortcut Prompt "复制      (\<C)"
Define Bar 4 Of shortcut Prompt "粘贴      (\<P)"
Define Bar 5 Of shortcut Prompt "\-"
Define Bar 6 Of shortcut Prompt "操作A     (\<A)"
Define Bar 7 Of shortcut Prompt "\-"
Define Bar 8 Of shortcut Prompt "操作B     (\<B)"
*如果不够用,照着加几个即可。

On Selection Bar 3 Of shortcut MyForm.CMD_MenuClick.Click(1)
On Selection Bar 4 Of shortcut MyForm.CMD_MenuClick.Click(2)
On Selection Bar 6 Of shortcut MyForm.CMD_MenuClick.Click(3)
On Selection Bar 8 Of shortcut MyForm.CMD_MenuClick.Click(4)


*--表单的RightClick事件代码:
Activate Popup shortcut At Mrow(),Mcol()


*--然后在表单上建一个Command按钮,其Visible设为.F.,其Click事件代码:
Parameters tnMenuID
Do Case
	Case tnMenuID=1
		Messagebox("你的相应代码1...",64,"信息提示")
	Case tnMenuID=2
		Messagebox("你的相应代码2...",64,"信息提示")
	Case tnMenuID=3
		Messagebox("你的相应代码3...",64,"信息提示")
	Case tnMenuID=4
		Messagebox("你的相应代码4...",64,"信息提示")
Endcase


*--最后运行你的表单时:
Public MyForm
Do Form 你的表单文件名.Scx Name MyForm
或
Do Form 你的表单文件名.Scx Name MyForm Linked

*--表单运行后,在表单上右单击鼠标即可显示菜单。
jack_wang0823 2013-12-30
  • 打赏
  • 举报
回复
多谢指点,,,,
十豆三 2013-12-30
  • 打赏
  • 举报
回复
Thisform.Grid1.Column4..DynamicForeColor='Iif(is_yc=.T.,Rgb(255,0,0),Rgb(0,0,0))'
jack_wang0823 2013-12-30
  • 打赏
  • 举报
回复
引用 4 楼 apple_8180 的回复:
不会呀,点击任意一项,菜单都会自动消失的。
不清楚是什么原因 就是消除不了... 我在点击之后加了rele popup 总算消失了... 反正每次点击都是要重定义的 释放了也没影响 还有个问题要请教 关于 setall(dynamicforcecoloe)的 我想表格中的一个列的text 根据条件显示不同颜色 使用了代码 Thisform.Grid1.column4.setall("forecolor" ,iff(is_yc=.t.,rgb(255,0,0,),rgb(0,0,0),"textbox") **is_yc 是一个字段, 当这个值为真时 , 什么text1的值是不正常的 要红色显示 不起作用 Thisform.Grid1.column4.setall("dynamicforecolor" ,"iff(is_yc=.t.,rgb(255,0,0,),rgb(0,0,0)","textbox") 说找不到属性 应该怎样写
十豆三 2013-12-30
  • 打赏
  • 举报
回复
不会呀,点击任意一项,菜单都会自动消失的。
jack_wang0823 2013-12-30
  • 打赏
  • 举报
回复
引用 2 楼 apple_8180 的回复:
*--然后在表单上建一个Command按钮,其Visible设为.F.,其Click事件代码: Parameters tnMenuID Do Case Case tnMenuID=1 Messagebox("你的相应代码1...",64,"信息提示") Case tnMenuID=2 Messagebox("你的相应代码2...",64,"信息提示") Case tnMenuID=3 Messagebox("你的相应代码3...",64,"信息提示") Case tnMenuID=4 Messagebox("你的相应代码4...",64,"信息提示") Endcase 这段代码中你可以写任意行代码。
多谢指点 右键菜单可以执行了, 但是点击以后, 菜单依然停在屏幕上 不会消失... 使用hide popup ,令也不起作用
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

2,749

社区成员

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

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