这需求很简单,仅使用 vfp 的原生拖放功能就行。先了解这几个基本的属性、事件、方法: DragMode,DragOver, DragDrop
1. 将你的 text1 的 DragMode 设为 1 - 自动,运行表单后,在 text1 上按住鼠标就能看到效果
2. 进一步, text2 的 DragDrop 事件写上
this.value = oSource.value
再次运行表单, 当你松开鼠标时, text1 的值就到 text2 上了
至此,你已经学会 拖-放 操作最基本的两个概念:DragMode - 允许拖,DragDrop - 用户放下。看似高大上的拖放,也就这么简单
剩下的几个 Drag??? 可实现更多的需求,例如:你要求的目标加亮,这需要用到 DragOver 事件
3. text2 的 DragOver 中写一行
wait window nowait oSource.name + icase(nState=0,'进入',nState=1,'离开','悬停')
再次运行表单, 把 text1 拖到 text2 上,现在你知道 oSource 和 nState 是啥意思了吧
假设你想加亮边框,就这么写:
do case
case nState == 0
&& 拖进时加亮
this.bordercolor = rgb(255,255,0)
case nState == 1
&& 拖走时恢复原貌
this.ResetToDefault('bordercolor')
endcase
再了解下其他相关的拖放相关内容,例如 DragIcon 属性、DragMode 为 2 - 手动模式、Drag 手工启动/停止拖操作,就能实现更多的控制
更复杂的拖放,还需要你了解操作系统提供的 OLE 拖放操作,仔细研读 OLE 开头的这些属性、方法、事件
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
[此贴子已经被作者于2023-4-17 07:59编辑过]