Laden und Speichern der Objektstruktur

 

Wir möchten nun das Laden und Speichern der Objektstruktur ermöglichen.

Dazu legen wir im Hauptmenü ein neues Menü an:

 

Die Umsetzung des Menüpunktes Neu ist schnell realisiert:

 

Das Laden und Speichern erfordert allerdings eine Kommunikation zwischen Client und Server, um einen Dateiauswahl-Dialog beim Client zu starten und eine Datei vom Client zum Server und umgekehrt zu transportieren.

Als erstes müssen Sie in den Eigenschaften der Wissensbais die Typbibliothek TCE Windows Objects aktivieren.

Diese Bibliothek verfügt momentan über keine Steuerelemente, kann jedoch sowohl serverseitig als auch clientseitig verwendet werden.

Hier nun der Code zum Speichern der Objektstruktur beim Client. Das Ziel dieses Programmcodes ist der Aufruf eines Dateiauswahldialogs beim Client, und nach erfolgreichem Festlegen des Dateinamens der Transport des Objektbaumes in eine Datei beim Client.

Function Click() As Void

   Dim V As Variant, FS As TCEWindows.FileSelect, FN As String

  

   FS := Client.CreateObject("TCEWindows.FileSelect")

   FS.Filter := "TCE Konfiguration||*.tce"

   If FS.ShowSave(MainForm.hwnd) Then

      FN := FS.FileName

      FN &= ".tce" If Right(FN, 4) <> ".tce"

      V := Produkt.ObjectTreeSerialize

      Server.TransactStreamToClient(FN, V)

   End If

End Function

 

Zunächst werden drei lokale Variablen deklariert:

Dim V As Variant, FS As TCEWindows.FileSelect, FN As String

V ist vom Typ Variant. Variant-Variablen können Binärdaten verarbeiten. Eine gespeicherte Objektstruktur besteht aus solchen Daten. FS ist eine COM-Objektzeigervariable vom Typ FileSelect. Sie nimmt einen Objektzeiger auf ein serverseitiges oder clientseitiges Objekt auf. FN nimmt den neuen Dateinamen auf.

FS := Client.CreateObject("TCEWindows.FileSelect")

Es wird ein Objekt vom Typ TCEWindows.FileSelect beim Client erzeugt. Bitte führen Sie diese Funktion nicht serverseitig durch, weil dann später der Dateiauswahl-Dialog auf dem Desktop des Servers angezeigt wird.

FS.Filter := "TCE Konfiguration (*.tce)||*.tce"

Legt den Dateifilter fest.

FS.ShowSave(MainForm.hwnd)

Öffnet den Speichern unter Dialog. Damit der Dialog nicht losgelöst von der Anwendung erscheint, wird das clientseitige Fensterhandle des Hauptfensters als Parameter übergeben. Bei Erfolg ist der Rückgabewert ungleich Null und FS.Name enthält den kompletten Dateinamen.

FN := FS.FileName

Übernimmt den Dateinamen in FN

 

FN &= ".tce" If Right(FN, 4) <> ".tce"

Der Dateiname soll die Endung tce aufweisen.

 

V := Produkt.ObjectTreeSerialize

Speichert den Objektbaum des Objekts Produkt mit allen speicherbaren Informationen der Variable V

Server.TransactStreamToClient(FN, V)

Der Inhalt der Variablen V wird vom Server zum Client transportiert, eine Datei angelegt und der Inhalt von V dort abgelegt.

 

Hier nun der Code zum Laden einer Objektstruktur vom Client. Das Ziel dieses Programmcodes ist der Aufruf eines Dateiauswahldialogs beim Client, und nach erfolgreicher Auswahl des Dateinamens der Transport des Inhaltes der Datei in einen Objektbaum beim Server.

Function Click() As Void

   Dim V As Variant

  

   Dim FS As TCEWindows.FileSelect

  

   FS := Client.CreateObject("TCEWindows.FileSelect")

   FS.Filter := "TCE Konfiguration (*.tce)||*.tce"

   If FS.ShowOpen(MainForm.hwnd) Then

      Client.TransactFileToStream(FS.FileName, V)

      Produkt := LoadObjectTree(V)

   End If

  

End Function

 

Zunächst werden zwei lokale Variablen deklariert:

Dim V As Variant

Variant-Variablen können Binärdaten verarbeiten. Eine gespeicherte Objektstruktur besteht aus solchen Daten.

Dim FS As TCEWindows.FileSelect

FS ist eine COM-Objektzeigervariable vom Typ FileSelect. Sie nimmt einen Objektzeiger auf ein serverseitiges oder clientseitiges Objekt auf

FS := Client.CreateObject("TCEWindows.FileSelect")

Es wird ein Objekt vom Typ TCEWindows.FileSelect beim Client erzeugt. Bitte führen Sie diese Funktion nicht serverseitig durch, weil dann später der Dateiauswahl-Dialog auf dem Desktop des Servers angezeigt wird.

FS.Filter := "TCE Konfiguration (*.tce)||*.tce"

Legt den Dateifilter fest.

FS.ShowOpen(MainForm.hwnd)

Öffnet den Datei öffnen-Dialog. Damit der Dialog nicht losgelöst von der Anwendung erscheint, wird das clientseitige Fensterhandle des Hauptfensters als Parameter übergeben. Bei Erfolg ist der Rückgabewert ungleich Null und FS.Name enthält den kompletten Dateinamen.

Client.TransactFileToStream(FS.FileName, V)

Die Funktion transportiert den Inhalt der clientseitigen Datei in eine serverseitige Variant Variable

Produkt := LoadObjectTree(V)

Die TCE-Funktion lädt einen Objektbaum aus den binären Daten, die vorher mit ObjectTreeSerialize erzeugt wurden, in ein Objekt.