- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VFP拖放操作编程
4.16.1 示例演示
执行该示例的步骤如下。
① 打开“任务窗格管理器”窗口,依次单击“控件”→“列表框”→“Treeview/列表框拖放”,打开图4-42所示的Listdd.scx表单。表单中左边的两个列表演示了在ActiveX控件Treeview之间的拖放实现方法,右边两个列表演示的是在Visual FoxPro列表框控件之间通过OLE模式实现拖放的方法。
② 在OLE拖放操作中,可以选择复制或移动数据。要移动数据,可以直接按住鼠标左键,拖动数据到放落目标上即可;要复制数据,需要按住鼠标左键的同时按住Ctrl键,拖动数据到放落目标上即可,此时鼠标指针下方将出现一个“+”形状。图4-43所示是移动拖放和复制拖放时鼠标指针的形状。
③ 如果按住鼠标右键拖放数据到放落目标,则显示一个快捷菜单,询问是复制数据还是移动数据,如图4-44所示。
图4-42 Listdd.scx表单
图4-43 拖放操作
图4-44 按住鼠标右键拖放数据
4.16.2 OLE拖放模式
Visual FoxPro支持控件的两种OLE拖放模式:固有模式和人工模式。在固有模式中,由Visual FoxPro处理OLE拖放操作;而在人工模式中,可通过编程来处理OLE拖放操作。
1.固有OLE拖放模式
固有OLE拖放模式可以提供标准的OLE拖放支持,而无须另外编程。要使用固有OLE拖放支持,需要将拖动源控件的OLEDragMode属性设置为1(自动),并将放落目标控件的OLEDropMode属性设置为1(启用)。
对于固有OLE拖放操作,Visual FoxPro确定放落目标是否支持将要放落在上面的数据格式。如果放落目标支持该格式,则可以放落,否则不允许放落。
表4-17列出了在固有模式下可以作为拖动源的Visual FoxPro控件及所支持的数据格式。其中的CF_TEXT是文本,就像在文本框中输入的文本,而CFSTR_VFPSOURCEOBJECT是对Visual FoxPro控件或对象的引用。对于支持CF_TEXT数据格式的控件,可以从控件的文本部分拖动文本。
表4-17????????????????????????????????????????????????????????????????????? 拖动源的数据格式
控件 数据格式(在FoxPro.h文件中定义) 容器、图像、线条、页框和形状 CFSTR_VFPSOURCEOBJECT 命令按钮和标签 CFSTR_VFPSOURCEOBJECT和CF_TEXT 复选框、组合框、编辑框、列表框、微调控件和文本框 CFSTR_VFPSOURCEOBJECT、CF_TEXT和CFSTR_OLEVARIANT 表4-18列出了在固有模式中可以作为放落目标的Visual FoxPro控件及所支持的数据格式。对于下表中列出的控件,可以向控件的文本部分放落文本,文本将在插入点插入。
表4-18??????????????????????????????????????????????????????????????????? 放落目标的数据格式
控件 数据格式 编辑框和组合框(当组合框的Style属性设置为0-下拉组合框) CF_TEXT 微调控件和文本框 CFSTR_OLEVARIANT 2.人工OLE拖放模式
有时,可能需要控制放落目标上能够放落的数据类型,或者需要为拖放操作提供附加功能。如将数据转换成放落目标所支持的格式,或者显示一个对话框,询问用户是否确认将数据放落到目标上等。在这些情况下,就需要使用人工方式处理拖放操作,来提供更好的功能控制。
为了实现对控件的人工OLE拖放支持,需要编写事件或方法程序的代码,来覆盖需要进行控制的拖放事件或方法程序。在事件或方法程序代码中包含NODEFAULT关键字,可以覆盖固有的Visual FoxPro拖放行为。
4.16.3 DataObject对象
DataObject对象为控件提供了编程方式的OLE拖放支持。DataObject对象是一个数据容器,该容器内的数据从OLE拖动源转移到OLE放落目标,并且该对象只在OLE拖放操作过程中存在,而不能通过编程来创建DataObject对象,当OLE拖放操作结束后,对它的引用将无效。在OLEStartDrag、OLEDragOver、OLEDragDrop和OLESetData事件中,DataObject通过oDataObject参数进行传递。
DataObject可以保存多组数据,每组数据可以有不同的格式。可使用GetFormat方法确定DataObject中数据存在的格式。
使用DataObject对象的方法程序可以通过编程来管理拖放的数据,下面将简单介绍这些方法。
1.ClearData方法
该方法
文档评论(0)