ole对象实际上就是别人的程序原封不动的拿来使用。可在 Visual Basic 应用程序中添加的最强大、最有用的功能之一就是在控件和控件之间、在控件和其它 Windows 应用程序之间拖动文本和图形。有了 OLE,就可将这种功能引入到应用程序中。
使用 OLE 拖放时,并不是把一个控件拖动到另一个控件并调用代码(象本章前面讨论的拖放一样);而是将数据从一个控件或应用程序移动到另一个控件或应用程序。例如,您可以选择并拖动
Excel 中的一个单元范围,然后将它们放到应用程序的 DataGrid 控件上。
Visual Basic 的几乎所有控件都在某种程度上支持 OLE 拖放。此外,一些标准的和 ActiveX 控件(由 Visual Basic 专业版和企业版提供的)还提供对 OLE 拖放的自动支持,这意味着控件支持在 OLEDragMode 和 OLEDropMode 属性中的自动设置,并且无论是从控件拖出还是在控件内放入都不需要编写代码。这一点与手动拖放相反,在手动拖放中,您必须为拖放编程:
有些支持自动 OLEDragMode 和 OLEDropMode 的控件包括 PictureBox、Label、以及 TextBox 控件。为对这些控件启动自动 OLE 拖放,应将 OLEDragMode 和 OLEDropMode 都设置为“自动化”。
有些控件支持自动 OLE 拖动,但只支持手动放下,有些支持自动放下,但只支持手动拖动。例如,ComboBox 控件支持手动和自动拖动,但不支持自动放下。这是由于如果您将一个项目拖动到 ComboBox 中,Visual Basic 无法知道将新项目放下的确切位置。然而,可以使用手动放下
,这样您就可以将项目程序化的放在您希望在 ComboBox 中的位置了。要启动这些控件的自动拖动,应将 OLEDragMode 属性设置为“自动化”。
有些控件只支持手动 OLE 拖放事件,这意味着可用代码对它们进行编程,使之成为 OLE 拖放操作的源,也可使之成为 OLE 拖放操作的目标。
注意 为判断其它 ActiveX 控件是否支持 OLE 拖放,应在 Visual Basic 中加载控件并检查 OLEDragMode 和 OLEDropMode 属性是否存在,或检查 OLEDrag 方法是否存在。(不自动支持 OLE 拖动的控件也将不具有 OLEDragMode 属性,但是,如果控件通过代码支持 OLE 拖动,则其具有 OLEDrag 方法。)
注意 窗体、MDI 窗体、文档对象、用户控件和属性页都包含 OLEDropMode 属性,而且仅支持手工拖放。