保存和检索嵌入的数据

与嵌入的对象相关的数据不是持久的,即当含有 OLE 容器控件的窗体被关闭时,与该控件相关的数据的任何变化将丢失。要将更改的数据从对象保存至文件中,需用 OLE 容器控件的 SaveToFile 方法。数据被保存在文件后,可以在需要的时候打开文件并恢复对象。

如果一个对象被链接 (OLEType = 0-Linked),实际上只有链接的信息和数据的图象被保存在指定的文件里。对象的数据由创建该对象的应用程序来维护。如果用户想把数据改变保存到链接的文件,用户必须从 ActiveX 部件的“文件”菜单选择“保存”指令,因为 SaveToFile 方法只应用于嵌入的对象。

如果对象被嵌入 (OLETpye = 1-Embeded),对象的数据由 OLE 容器控件维护,并能用 Visual Basic 应用程序保存。

OLE 容器控件中的对象只能保存于打开的二进制文件。

要将数据从对象保存到文件中,请按照以下步骤执行:

  1. 打开二进制文件。

  2. 使用 SaveToFile 方法。

cmdSaveObject-Click 事件过程说明这些步骤:

Private Sub cmdSaveObject_Click ()
   Dim FileNum as Integer
   '取文件号。
   FileNum = FreeFile
   '打开要保存的文件。
   Open "TEST.OLE" For Binary As #FileNum
   '保存文件。
   oleObj1.SaveToFile FileNum
   '关闭文件。
   Close #FileNum
End Sub

一旦对象被保存至文件中,它将能被打开并显示在 OLE 容器控件里。

注意 当用 SaveToFile 或 ReadFromFile 方法时,将文件定位在紧接对象之后。因此,如果保存多个对象到一个文件里,读取它们的顺序应与写它们的顺序相同。

要将数据从文件读入 OLE 容器控件,请按照以下步骤执行:

  1. 打开二进制文件。

  2. 使用对象的 ReadFromFile 方法。

cmdOpenObject_Click 事件过程示出了这些步骤:

Private Sub cmdOpenObject_Click ()
   Dim FileNum as Integer
   '取文件号。
   FileNum = FreeFile
   '打开文件。
   Open "TEST.OLE" For Binary As #FileNum
   '读文件。
   oleObj1.ReadFromFile FileNum
   '关闭二进制文件。
   Close #FileNum
End Sub

每当对象的内容被改变,就调用 Updated 事件。这个事件用于决定对象的数据在最后一次保存时是否被更改。为此,在 Updated 事件中设一个全局的变量,指示需要保存的对象。保存对象时,重新设置该变量。