Skip to content

OLE 类

OLE 容器控件在窗体上承载链接或嵌入的OLE Automation对象——通常是Word文档、Excel电子表格或任何其他已注册的OLE服务器——并允许用户通过其注册的动词就地激活和编辑包含的对象。

INFO

OLE容器控件在twinBASIC中是VB6兼容性存根。几乎所有OLE特有的属性、方法和事件当前均未实现(每个都在下方标注)。继承的基控件成员——定位、大小调整、锚定、焦点、拖动、鼠标光标——可以正常工作,因此从VB6移植的项目仍然可以解析控件并将其布局在窗体上,但无法通过它创建、嵌入、链接、粘贴、保存或激活实际的OLE对象。

没有默认属性。默认设计器事件为Click

vb
' 以下OLE特有调用在twinBASIC中当前不可用
' 此示例仅供参考。
Private Sub Form_Load()
    OLE1.CreateEmbed vbNullString, "Excel.Sheet"   ' [未实现]
End Sub

Private Sub OLE1_Click()
    OLE1.DoVerb vbOLEPrimary                       ' [未实现]
End Sub

链接与嵌入对象

OLE容器持有链接对象——对磁盘上文档的引用,在激活时以注册的服务器打开——或嵌入对象,其数据存储在主机窗体的数据流中。CreateLink从现有文件创建链接对象;CreateEmbed创建给定类的新嵌入对象。OLEType报告当前内容采用哪种形式,OLETypeAllowed限制容器在设计或运行时接受哪种形式。

SourceDocSourceItem标识链接文件(以及对于部分链接,其中的项目)。Class保存嵌入服务器的ProgID(例如"Word.Document""Excel.Sheet")。

动词

每个OLE服务器注册一组动词——标记的操作,如打开编辑播放FetchVerbs填充每个实例的动词列表,作为索引属性ObjectVerbsObjectVerbFlagsObjectVerbsCount暴露。DoVerb按索引执行动词——传递vbOLEPrimary运行服务器的主动词,即双击调用的操作。AutoVerbMenu控制右击控件是否自动弹出动词菜单。

激活和显示

AutoActivate选择嵌入对象何时被激活进行就地编辑——手动、焦点时或双击时。DisplayType在直接渲染对象内容和渲染注册图标之间选择。SizeMode选择对象的位图如何适配容器(裁剪、拉伸、自动调整大小或缩放)。

更新和存储

链接对象的最后缓存表示可以通过Update从其服务器重新获取;UpdateOptions决定更新是自动还是按需进行。容器可以通过SaveToFile(或SaveToOle1File用于旧版OLE1流格式)从打开的文件中持久化,并使用ReadFromFile重新加载,每种情况都使用以Open打开的Basic文件号。InsertObjDlgPasteSpecialDlg引发用于选择对象类或剪贴板格式的标准Windows OLE对话框。

数据绑定

设置DataSourceDataField将容器的内容连接到Data控件记录集的二进制字段,使嵌入对象从行中加载并保存回行。DataChanged报告包含的对象是否与绑定行的存储值不同。

属性

Action

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的Integer,赋值时执行预定义的OLE操作之一,如创建删除粘贴更新。现代代码使用等效的命名方法(CreateEmbedDeletePasteUpdate等)代替。

Anchors

父级的边缘集合,OLE控件的对应边缘在父级调整大小时跟随。只读——通过返回的Anchors对象分配单独的.Left.Top.Right.Bottom标志。

Appearance

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

决定容器的边框如何绘制。AppearanceConstants的成员:vbAppearFlatvbAppear3d(默认)。

AppIsRunning

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的Boolean:当承载嵌入对象的OLE服务器正在运行时为True。赋值True启动服务器;赋值False关闭它。

AutoActivate

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

选择嵌入对象何时被激活进行就地编辑。OLEContainerActivateConstants的成员:vbOLE_ActivateManualvbOLE_ActivateGetFocusvbOLE_ActivateDoubleclick(默认)或vbOLE_ActivateAuto

AutoVerbMenu

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

True(默认)时,右击容器自动弹出包含对象注册动词的菜单。Boolean

BackColor

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

背景颜色,作为OLE_COLOR。默认为系统窗口背景颜色。

BackStyle

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

在 opaque 和透明背景之间选择(BackFillStyleConstants):vbBFTransparentvbBFOpaque(默认)。

BorderStyle

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

容器是否绘有边框。ControlBorderStyleConstants的成员:vbNoBordervbFixedSingleBorder(默认)。

CausesValidation

决定之前焦点控件的Validate事件是否在此控件获得焦点之前运行。Boolean,默认True

Class

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

包含对象的OLE服务器类的ProgID——例如"Word.Document""Excel.Sheet"String。在设计时填充容器时与SourceDocSourceItem一起使用,或作为InsertObjDlg的默认类。

Container

承载此OLE控件的控件——通常是窗体。使用Get读取,使用Set更改。设置Container在运行时将控件重新父级化到不同的容器。

ControlType

标识此控件为OLE容器的只读ControlTypeConstants值。始终为vbOLEControl

Data

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的Long句柄,指向Format中命名的格式返回的数据块。与ObjectAcceptFormats / ObjectGetFormats机制一起使用,以往返原始OLE数据。

DataChanged

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的Boolean:如果绑定的记录集字段自容器上次加载以来已更改则为True。成功保存后被清除。

DataField

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

在绑定的DataSource的记录集中,由OLE容器存储和检索其内容的二进制字段的名称。String

DataSource

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

引用Data控件(或其他DataSource提供者),其记录集为DataField提供值。使用Set设置。

DataText

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的String别名,用于将文本格式数据传入和传出包含对象的剪贴板等效物。

DisplayType

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

容器显示对象内容还是其注册图标。OLEContainerDisplayTypeConstants的成员:vbOLE_DisplayContent(默认)或vbOLE_DisplayIcon

Dock

OLE控件在其容器中停靠的位置。DockModeConstants的成员:vbDockNone(默认)、vbDockLeftvbDockTopvbDockRightvbDockBottomvbDockFill。停靠的控件忽略Anchors

DragIcon

在控件被拖放时用作鼠标光标的StdPicture(参见DragDragMode)。

DragMode

控件是否应在用户按住鼠标时拖动自身。DragModeConstants的成员:vbManual (0, 默认——从代码调用Drag)或vbAutomatic (1)。

Enabled

决定控件是否接受用户输入。Boolean,默认True

FileNumber

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的Integer,给出最近一次ReadFromFileSaveToFileSaveToOle1File调用传递的Basic文件号。

Format

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当前与Data句柄关联的剪贴板格式标识符。String

Height

控件的高度,默认以缇为单位(或以容器的ScaleMode单位)。Single

HelpContextID

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。仅当主机构建定义了FEATURE_HELP时可用。

标识应用程序帮助文件中主题的Long,当用户在控件具有焦点时按F1时检索。

HostName

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

OLE服务器应为宿主应用程序显示的友好名称——例如,在就地编辑嵌入文档时显示在Word的标题栏中。String

hWnd

底层控件的Win32窗口句柄,作为LongPtr。只读。适用于传递给API函数。

Index

当控件是控件数组的一部分时,此实例在数组中从零开始的Long索引。在非数组实例上读取Index会引发运行时错误343(Object not an array)。运行时只读。

Left

从容器的左边缘到控件左边缘的水平距离。Single

LpOleObject

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的LongPtr,给出包含对象的原始IOleObject接口指针,用于传递给原生代码。

MiscFlags

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

杂项容器行为的位掩码(参见OLEContainerConstants——vbOLEMiscFlagMemStoragevbOLEMiscFlagDisableInPlace)。Long

MouseIcon

MousePointervbCustom且指针位于控件上时用作鼠标光标的StdPicture

MousePointer

当指针位于控件上时显示的鼠标光标。MousePointerConstants的成员。

Name

控件在其父窗体上的唯一设计时名称。运行时只读。

object

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的包含对象OLE Automation接口的Object引用——用于后期绑定脚本编写的入口点。只读

ObjectAcceptFormats

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

索引String属性,列出包含对象在粘贴时可以接受的剪贴板格式。使用ObjectAcceptFormatsCount限定索引范围。

ObjectAcceptFormatsCount

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

ObjectAcceptFormats中的条目数。Integer

ObjectGetFormats

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

索引String属性,列出包含对象在复制时可以生成的剪贴板格式。使用ObjectGetFormatsCount限定索引范围。

ObjectGetFormatsCount

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

ObjectGetFormats中的条目数。Integer

ObjectVerbFlags

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

索引Long属性,给出ObjectVerbs中每个条目的菜单标志位掩码。标志值与Win32 MF_*菜单常量匹配,指示动词项是否灰显、选中等等。

ObjectVerbs

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

索引String属性,列为包含对象注册的动词名称——由FetchVerbs填充。将索引传递给DoVerb以调用动词。

ObjectVerbsCount

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

ObjectVerbs中的条目数。Long

OLEDropAllowed

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

True时,容器接受从应用程序外部拖放到其上的OLE对象。Boolean,默认False

OLEType

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用的Integer,报告包含对象当前是链接的、嵌入的还是空的(参见OLEContainerConstants——vbOLELinkedvbOLEEmbeddedvbOLEEithervbOLENone)。

OLETypeAllowed

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

限制容器将接受哪种类型的包含对象。OLEContainerTypesAllowedConstants的成员:vbOLE_LinkedvbOLE_EmbeddedvbOLE_Either(默认)。

Parent

引用包含此控件的Form(或UserControl)。只读。

PasteOK

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用只读Boolean:当当前剪贴板内容的格式可被包含对象通过Paste接受时为True

Picture

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

运行时专用只读IPictureDisp,给出包含对象当前的表示作为图片,适合打印或复制到PictureBox上。

SizeMode

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

包含对象的位图如何适配容器。OLEContainerSizeModeConstants的成员:vbOLE_SizeClip(默认)、vbOLE_SizeStretchvbOLE_SizeAutoSizevbOLE_SizeZoom

SourceDoc

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

CreateLink使用的源文件的完整路径(以及InsertObjDlg的默认值)。String

SourceItem

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

SourceDoc中链接引用的命名项目——例如Excel范围名称。String

TabIndex

控件在窗体TAB键导航顺序中的位置。Long

TabStop

用户是否可以通过按TAB键到达控件。Boolean,默认True。禁用的控件无论此设置如何都会被跳过。

Tag

应用程序可用于将自定义数据与控件关联的自由格式String。框架忽略此属性。

Top

从容器顶部到控件顶部的垂直距离。Single

UpdateOptions

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

链接对象的缓存表示如何刷新。OLEContainerUpdateOptionsConstants的成员:vbOLE_UpdateAutomatic(默认)、vbOLE_UpdateFrozenvbOLE_UpdateManual

Verb

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

旧版Action属性执行执行动词操作时使用的Long动词索引。新代码应直接调用DoVerb

Visible

控件是否显示。Boolean,默认True

WhatsThisHelpID

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。仅当主机构建定义了FEATURE_HELP时可用。

标识应用程序帮助文件中"What's This?"帮助弹出主题的Long。参见ShowWhatsThis

Width

控件的宽度。Single

方法

Close

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

关闭包含的对象,结束正在运行的服务器会话(如果有)。容器的数据被保留;仅断开实时编辑连接。

语法:object.Close

Copy

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

将包含的对象复制到系统剪贴板。

语法:object.Copy

CreateEmbed

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

创建给定类的新嵌入对象,可选地从模板文件预填充。

语法:object.CreateEmbed SourceDoc [, Class ]

SourceDoc
必需 String。用作新对象模板的文件路径,或vbNullString创建空白对象。
Class
可选 Variant String ProgID,标识要实例化的OLE服务器类(例如"Word.Document")。当SourceDoc为空时必需。

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

创建引用磁盘上现有文件的链接对象。

语法:object.CreateLink SourceDoc [, SourceItem ]

SourceDoc
必需 给出源文件完整路径的String
SourceItem
可选 Variant String,标识源文件中要链接到片段而非整个文档的命名项目(例如Excel范围名称)。

Delete

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

从容器中移除包含的对象。释放与其关联的所有资源。

语法:object.Delete

DoVerb

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

对包含的对象调用已注册的动词。标准动词常量在OLEContainerConstants中定义——vbOLEPrimary (0)、vbOLEShow (-1)、vbOLEOpen (-2)、vbOLEHide (-3)、vbOLEUIActivate (-4)、vbOLEInPlaceActivate (-5)、vbOLEDiscardUndoState (-6);正索引引用ObjectVerbs中按服务器的条目。

语法:object.DoVerb [ Verb ]

Verb
可选 Variant Long。省略时默认为vbOLEPrimary

Drag

开始、完成或取消手动拖放操作。通常在DragModevbManual时从MouseDown处理程序调用。

语法:object.Drag [ Action ]

Action
可选 DragConstants的成员:vbCancel (0)、vbBeginDrag (1, 默认)或vbEndDrag (2)。

FetchVerbs

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

从包含对象的服务器重新读取动词列表并刷新ObjectVerbsObjectVerbFlagsObjectVerbsCount

语法:object.FetchVerbs

InsertObjDlg

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

显示标准Windows插入对象对话框,以便用户可以选择新嵌入对象、现有文件(链接或嵌入)或图标。

语法:object.InsertObjDlg

Move

通过一次调用重新定位并可选地调整控件大小。

语法:object.Move Left [, Top [, Width [, Height ] ] ]

Left
必需 给出新水平位置的Single
Top, Width, Height
可选 相应属性的新值。省略的值保持不变。

Paste

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

将当前剪贴板内容粘贴到容器中,前提是PasteOK报告格式可接受。

语法:object.Paste

PasteSpecialDlg

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

显示标准Windows选择性粘贴对话框,以便用户可以选择当前剪贴板内容的粘贴方式(链接、嵌入或作为特定格式)。

语法:object.PasteSpecialDlg

ReadFromFile

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

从先前用SaveToFile写入的Basic样式二进制文件中读取容器内容。

语法:object.ReadFromFile FileNumber

FileNumber
必需 IntegerOpen语句返回的文件号,在以For Binary打开的流上。

SaveToFile

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

将容器内容——包括链接或嵌入对象的数据和任何表示缓存——以当前OLE2流格式写入Basic样式二进制文件。

语法:object.SaveToFile FileNumber

FileNumber
必需For Binary打开的Integer

SaveToOle1File

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

以旧版OLE1流格式写入容器内容。为往返非常旧的应用程序生成的数据文件而提供;新代码应使用SaveToFile

语法:object.SaveToOle1File FileNumber

FileNumber
必需For Binary打开的Integer

SetFocus

将输入焦点移到控件。控件必须同时VisibleEnabled,否则会引发运行时错误5(Invalid procedure call or argument)。

语法:object.SetFocus

Show WhatsThis

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。仅当主机构建定义了FEATURE_HELP时可用。

将以WhatsThisHelpID标识的主题显示为"What's This?"弹出窗口。

语法:object.ShowWhatsThis

Update

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

对于链接对象,从源文件检索最新数据并刷新缓存的表示。对于服务器正在运行的嵌入对象,请求服务器将任何待处理的更改提交回容器。

语法:object.Update

ZOrder

将控件带到其同级堆栈的前面或后面。

语法:object.ZOrder [ Position ]

Position
可选 ZOrderConstants的成员:vbBringToFront (0, 默认)或vbSendToBack (1)。

事件

Click

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当用户用任意鼠标按钮点击容器时引发。默认设计器事件。

语法:object_Click( )

DblClick

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当用户双击容器时引发。使用默认的AutoActivate设置vbOLE_ActivateDoubleclick时,这与激活包含对象进行就地编辑的手势相同。

语法:object_DblClick( )

DragDrop

当手动拖动操作在目标控件上结束时在目标控件上引发。

语法:object_DragDrop( Source As Control, X As Single, Y As Single )

DragOver

当手动拖动操作进行中时在光标下方的控件上引发。

语法:object_DragOver( Source As Control, X As Single, Y As Single, State As Integer )

GotFocus

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当控件获得输入焦点时引发。

语法:object_GotFocus( )

Initialize

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

在控件的底层窗口创建之后引发一次。

语法:object_Initialize( )

KeyDown

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当控件具有焦点时用户按下任意键引发。

语法:object_KeyDown( KeyCode As Integer, Shift As Integer )

KeyPress

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当用户输入产生ANSI按键的字符时引发。

语法:object_KeyPress( KeyAscii As Integer )

KeyUp

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当控件具有焦点时用户释放键引发。

语法:object_KeyUp( KeyCode As Integer, Shift As Integer )

LostFocus

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当控件失去输入焦点时引发。

语法:object_LostFocus( )

MouseDown

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当用户在控件上按下任意鼠标按钮时引发。

语法:object_MouseDown( Button As Integer, Shift As Integer, X As Single, Y As Single )

MouseMove

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当光标在控件上移动时引发。

语法:object_MouseMove( Button As Integer, Shift As Integer, X As Single, Y As Single )

MouseUp

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当用户在控件上释放鼠标按钮时引发。

语法:object_MouseUp( Button As Integer, Shift As Integer, X As Single, Y As Single )

ObjectMove

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当包含对象请求容器重新定位或调整自身大小时引发——通常是响应就地编辑更改。

语法:object_ObjectMove( Left As Single, Top As Single, Width As Single, Height As Single )

Resize

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

当包含对象报告新的自然大小时引发——例如,嵌入图像被替换为不同尺寸的图像后。

语法:object_Resize( HeightNew As Single, WidthNew As Single )

Updated

INFO

保留用于VB6兼容性;twinBASIC中当前未实现。

在包含对象被修改后引发,以便主机可以将自身标记为脏。CodeOLEContainerConstants中的状态值之一:vbOLEChangedvbOLESavedvbOLEClosedvbOLERenamed

语法:object_Updated( Code As Integer )

Validate

当焦点移向另一个CausesValidationTrue的控件时引发。将Cancel设置为True使焦点保持在此控件上。

语法:object_Validate( Cancel As Boolean )

twinBASIC及其LOGO版权为作者"韦恩"所有