Metainformationen zur Seite
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
speedy:30_modules:script [2021/07/12 19:55] – [Scripting] speedyspeedy:30_modules:script [2024/01/17 09:02] (aktuell) – [File-Ereignisse] speedy
Zeile 5: Zeile 5:
 Die Ereignisbehandlungsroutinen werden in einer Textdatei definiert.  Die Ereignisbehandlungsroutinen werden in einer Textdatei definiert. 
 Das Scripting-Modul lädt die Script-Datei **"speedy.vbs"** bzw. **"speedy.js"** aus dem Unterverzeichnis **".\script"**.  Das Scripting-Modul lädt die Script-Datei **"speedy.vbs"** bzw. **"speedy.js"** aus dem Unterverzeichnis **".\script"**. 
-Desweiteren werden aus dem selben Ordner noch die Script-Dateien **"document.*"**,**"container.*"**,**"swxSpeedy.*"** und **"aisSpeedy.*"** aufgerufen. +Des weiteren werden aus dem selben Ordner noch die Script-Dateien **"document.*"**,**"container.*"**,**"swxSpeedy.*"**,  **"aisSpeedy.*"** und **"seSpeedy.*"** aufgerufen. 
 Beispielcodes befinden sich im Verzeichnis **.\script\example\**. Beispielcodes befinden sich im Verzeichnis **.\script\example\**.
 \\ \\ \\ \\
Zeile 13: Zeile 13:
 |document.*| Wird beim Neu-Dialog und beim Eigenschaften-Dialog des Dokuments aufgerufen | |document.*| Wird beim Neu-Dialog und beim Eigenschaften-Dialog des Dokuments aufgerufen |
 |container.*| Wird beim Neu-Dialog und beim Eigenschaften-Dialog des Containers aufgerufen | |container.*| Wird beim Neu-Dialog und beim Eigenschaften-Dialog des Containers aufgerufen |
 +|file.*| Wird beim Eigenschaften-Dialog von Dateien aufgerufen |
 |swxSpeedy.*| Wird bei Aktionen innerhalb von Solidworks aufgerufen | |swxSpeedy.*| Wird bei Aktionen innerhalb von Solidworks aufgerufen |
 |aisSpeedy.*| Wird bei Aktionen innerhalb von Autodesk Inventor aufgerufen | |aisSpeedy.*| Wird bei Aktionen innerhalb von Autodesk Inventor aufgerufen |
 +|seSpeedy.*| Wird bei Aktionen innerhalb von SolidEdge aufgerufen |
  
  
-==== Ereignisroutinen ====+===== Ereignisroutinen =====
 Die Ereignisroutinen haben, wenn nicht anders beschrieben, immer die gleichen Aufrufparameter.  Die Ereignisroutinen haben, wenn nicht anders beschrieben, immer die gleichen Aufrufparameter. 
 <code>Event_Function_Name(timing, handling, dictionary)</code>  <code>Event_Function_Name(timing, handling, dictionary)</code> 
Zeile 24: Zeile 26:
 | timing      | EventTimingEnum     | Gibt den Zeitpunkt des Ereignisses an. | | timing      | EventTimingEnum     | Gibt den Zeitpunkt des Ereignisses an. |
 | handling    | HandlingCodeEnum    | Rückgabewert, ob die Ereignisroutine das Ereignis behandelt hat und damit evtl. keine weitere Arbeit durch das System zu erfolgen hat. | | handling    | HandlingCodeEnum    | Rückgabewert, ob die Ereignisroutine das Ereignis behandelt hat und damit evtl. keine weitere Arbeit durch das System zu erfolgen hat. |
-| dictionary  | Dictionary - Object | Scripting.Dictionary aus der Scripting Runtime Library | +| dictionary  | Dictionary - Object | Scripting.Dictionary aus der Scripting Runtime Library. Der Inhalt des Dictionaries kann variieren. |
-\\+
  
-=== Konstanten ===+==== Konstanten ====
  
 Der Parameter **timing** gibt an zu welcher Zeit das Ereignis ausgeführt wird. Der Parameter **timing** gibt an zu welcher Zeit das Ereignis ausgeführt wird.
Zeile 39: Zeile 40:
 </code> </code>
  
-Der Parameter **handling** gibt eine Information wie das Ereignis behandlet wurde zurück. Standart-Wert = 1+Der Parameter **handling** gibt eine Information wie das Ereignis behandelt wurde zurück. Standart-Wert = 1
  
 <code> <code>
Zeile 54: Zeile 55:
 |event.function| Name der Ereignisfunktion | |event.function| Name der Ereignisfunktion |
 |event.timing| Zeitpunkt der Ereignisfunktion (siehe EventTimingEnum) | |event.timing| Zeitpunkt der Ereignisfunktion (siehe EventTimingEnum) |
-|session.database| ADO-Datenbankobjekt der Session Datenbank |+|session.database| ADODB-Datenbankobjekt (ADODB.Connection) der Session Datenbank |
 |session.user| Aktueller Speedy User | |session.user| Aktueller Speedy User |
 |session.apptype| Applikationstyp: \\ 1 := Service-Modul\\ 4 := speedy-Admin\\ 8 := speedy-Explorer\\ 16 := speedy-Viewer\\ 128 := Solidworks-Addin\\ 256 := Inventor-Addin | |session.apptype| Applikationstyp: \\ 1 := Service-Modul\\ 4 := speedy-Admin\\ 8 := speedy-Explorer\\ 16 := speedy-Viewer\\ 128 := Solidworks-Addin\\ 256 := Inventor-Addin |
-|vault.database| ADO-Datenbankobjekt der Vault Datenbank |+|vault.database| ADODB-Datenbankobjekt (ADODB.Connection) der Vault Datenbank |
 |vault.name| Name des Vault-Objekts | |vault.name| Name des Vault-Objekts |
 |obj_id| Objekt-Id als Zeichenkette in der Form "{0-1-2-3-4-5}"| |obj_id| Objekt-Id als Zeichenkette in der Form "{0-1-2-3-4-5}"|
Zeile 83: Zeile 84:
 Gibt den Root Path, wie in der dwKernel.ini eingestellt, zurück. \\ Gibt den Root Path, wie in der dwKernel.ini eingestellt, zurück. \\
 \\ \\
 +
 === Application.GetVaultCount === === Application.GetVaultCount ===
 Gibt die Anzahl der Vault datenbank zurück. \\ Gibt die Anzahl der Vault datenbank zurück. \\
 \\ \\
 +
 === Application.GetVaultDbAt(iIndex) === === Application.GetVaultDbAt(iIndex) ===
 Gibt das ADODB.Connection Object der entsprechenden Vault Datenbank zurück. \\ Gibt das ADODB.Connection Object der entsprechenden Vault Datenbank zurück. \\
 \\ \\
 +
 === Application.GetVaultNameAt(iIndex) === === Application.GetVaultNameAt(iIndex) ===
 Gibt den Namen der Vault Datenbank zurück. \\ Gibt den Namen der Vault Datenbank zurück. \\
 \\ \\
 +
 === Application.GetTempFileName === === Application.GetTempFileName ===
 Gibt einen temporären Dateinamen im aktuellen Temp-Verzeichnis zurück. \\ Gibt einen temporären Dateinamen im aktuellen Temp-Verzeichnis zurück. \\
 \\ \\
 +
 === Application.GetTempPath === === Application.GetTempPath ===
 Gibt das aktuelle Temp-Verzeichnis zurück. \\ Gibt das aktuelle Temp-Verzeichnis zurück. \\
 \\ \\
 +
 === Application.GetAppPath === === Application.GetAppPath ===
 Gibt das Installationsverzeichnis der Anwendung zurück. \\ Gibt das Installationsverzeichnis der Anwendung zurück. \\
 \\ \\
 +
 === Application.ProgressStart(lMin, lMax, sTitle, sMessage) === === Application.ProgressStart(lMin, lMax, sTitle, sMessage) ===
 Beginnt einen Dialog mit Fortschrittsanzeige. \\ Beginnt einen Dialog mit Fortschrittsanzeige. \\
 \\ \\
 +
 === Application.ProgressStop === === Application.ProgressStop ===
 Stoppt die Fortschrittsanzeige. \\ Stoppt die Fortschrittsanzeige. \\
 \\ \\
 +
 === Application.ProgressText(sText) === === Application.ProgressText(sText) ===
 Setzt den Text in der Fortschrittsanzeige. \\ Setzt den Text in der Fortschrittsanzeige. \\
 \\ \\
 +
 === Application.ProgressStep === === Application.ProgressStep ===
 Führt einen Schritt in der Fortschrittsanzeige aus. \\ Führt einen Schritt in der Fortschrittsanzeige aus. \\
 \\ \\
 +
 === Application.Log(lSeverity, sMessage) === === Application.Log(lSeverity, sMessage) ===
 Protokolliert einen Text in der aktuellen Log-Datei. \\ Protokolliert einen Text in der aktuellen Log-Datei. \\
 \\ \\
 +
 === Application.InvokeCommand(sCallBack, wParam, lParam) === === Application.InvokeCommand(sCallBack, wParam, lParam) ===
 Ruft einen speedy Zusatzbefehl auf. \\ Ruft einen speedy Zusatzbefehl auf. \\
 \\ \\
 +
 === Application.HasCommand(sCallBack) === === Application.HasCommand(sCallBack) ===
 Überprüft, ob der Zusatzbefehl vorhanden ist. \\ Überprüft, ob der Zusatzbefehl vorhanden ist. \\
 \\ \\
 +
 === Application.ConsoleExecute(sCmd, sDirectory, lWait) === === Application.ConsoleExecute(sCmd, sDirectory, lWait) ===
 Führt ein Programm/Aufruf auf der Konsole aus. \\ Führt ein Programm/Aufruf auf der Konsole aus. \\
Zeile 135: Zeile 150:
 ^Parameter^Beschreibung^ ^Parameter^Beschreibung^
 |Result[String]| Ergebnis der Auswahl, Wert der 1. Spalte der gewählten Zeile in der Auswahltabelle. | |Result[String]| Ergebnis der Auswahl, Wert der 1. Spalte der gewählten Zeile in der Auswahltabelle. |
-|DataName[String]| a) Name des Eigenschafttenformats. Im Eigenschaftenformat wird die Datenbankverbindung und das SQL Statement definiert. Die Werte für Connection und DataSource bleiben leer. \\ b) Name der Datenbankverbindung |+|DataName[String]| a) Name des Eigenschaftenformats. Im Eigenschaftenformat wird die Datenbankverbindung und das SQL Statement definiert. Die Werte für Connection und DataSource bleiben leer. \\ b) Name der Datenbankverbindung. Bei externer Datenbank optional. z.B. "session.database" für eigene Datenbank. |
 |Connection[String]| ConnectionString zum Aufbau der Datenbankverbindung. | |Connection[String]| ConnectionString zum Aufbau der Datenbankverbindung. |
 |DataSource[String]| SQL Statement zur Ermittlung der Auswahltabelle. Die 1. Spalte ergibt das Ergebnis des Lookup. | |DataSource[String]| SQL Statement zur Ermittlung der Auswahltabelle. Die 1. Spalte ergibt das Ergebnis des Lookup. |
Zeile 159: Zeile 174:
 === Application.GetDocumentPath(DocNo) ===  === Application.GetDocumentPath(DocNo) === 
 Gibt den Ablagepfad des Dokuments zurück.\\ Gibt den Ablagepfad des Dokuments zurück.\\
 +<code>doc_path = Application.GetDocumentPath(dictionary.item("dm_docno"))</code>
 \\  \\ 
  
Zeile 167: Zeile 183:
 Die Funktion gibt 0 zurück, wenn kein Fehler vorliegt. \\ Die Funktion gibt 0 zurück, wenn kein Fehler vorliegt. \\
 Die Funktion liefert kein Ergebnis aus dem SQL-Statement zurück. \\ Die Funktion liefert kein Ergebnis aus dem SQL-Statement zurück. \\
-<code>DbExecute("", "UPDATE dm_document d inner join dm_version v ON d.doc_did=v.ver_did AND d.doc_rev=v.ver_major AND d.doc_ver=v.ver_minor inner join dm_prop_cad p on v.ver_vid=p.prop_did SET p.NORM = 'DIN 931' WHERE d.doc_docno = 'BS01516';")</code>+<code> 
 +Call DbExecute("", "UPDATE dm_document d inner join dm_version v ON d.doc_did=v.ver_did AND d.doc_rev=v.ver_major AND d.doc_ver=v.ver_minor inner join dm_prop_cad p on v.ver_vid=p.prop_did SET p.NORM = 'DIN 931' WHERE d.doc_docno = 'BS01516';") 
 +</code> 
 +\\
  
-=== Application.DbQuery(Connection, Statement) === +=== Application.DbQuery(ByRef Result, Connection, Statement) === 
 Führt das SQL-Abfrage auf der benannten Datenbankverbindung aus. \\ Führt das SQL-Abfrage auf der benannten Datenbankverbindung aus. \\
 Wird keine Verbindung (Connection) angegeben, wird die Datenbank der Session verwendet. \\ Wird keine Verbindung (Connection) angegeben, wird die Datenbank der Session verwendet. \\
 +Rückgabewert: 0:=Kein Fehler, Sonst Fehler-Code \\
 +
 In Multi-Vault-Umgebungen kann der Name des Vault angegeben werden, um die Datenbank des Vault zu verwenden. \\ In Multi-Vault-Umgebungen kann der Name des Vault angegeben werden, um die Datenbank des Vault zu verwenden. \\
-Die Funktion liefert die Werte der in der Abfrage definierten Felder in einem Array zurück. +Die Funktion liefert die Werte der in der Abfrage definierten Felder in einem Array zurück. \\ 
-<code>DbQuery("", "SELECT lst_idx,lst_name,lst_desc FROM lng_lst WHERE lst_typ='PROJEKTSTATUS';"+Beispiel:  
 +<code> 
 +Call DbQuery(result, "", "SELECT lst_idx,lst_name,lst_desc FROM lng_lst WHERE lst_typ='PROJEKTSTATUS';"
  
 Ergebnis: Ergebnis:
Zeile 184: Zeile 207:
 5 5 "Fertig" 5 5 "Fertig"
 </code> </code>
 +Beispiel: 
 +<code>
 +Dim sql, result
 +sql = "SELECT lst_name,lst_desc FROM lng_lst WHERE lst_typ='bomtype'"
 +result = Null
 +if Application.DbQuery(result, "", sql) = 0 And not IsNull(result) Then
 +   MsgBox result(0, 0)
 +   MsgBox result(0, 1)
 +end if
 +</code>
 +\\
  
-=== Application.DbLookup(Connection, Expression, Domain, Criteria) === +=== Application.DbLookup(ByRef Result, Connection, Expression, Domain, Criteria) === 
 Mit der DbLookup-Funktion können Sie den Wert eines bestimmten Feldes (Expression) aus einer bestimmten Datensatzgruppe (einer Domäne) abrufen.\\ Mit der DbLookup-Funktion können Sie den Wert eines bestimmten Feldes (Expression) aus einer bestimmten Datensatzgruppe (einer Domäne) abrufen.\\
-Mit der Angabe von Criteria definieren Sie ein Suchkriterium.\\ +Mit der Angabe von Criteria definieren Sie ein Suchkriterium. \\  
 +Wird keine Verbindung (Connection) angegeben, wird die Datenbank der Session verwendet. \\ 
 +Rückgabewert: 0:=Kein Fehler, Sonst Fehler-Code \\ 
 In de Praxis werden die 3 Werte zu einem SQL-Statement zusammengesetzt und der erste gefundene Wert ist das Ergebnis der Suche: \\ In de Praxis werden die 3 Werte zu einem SQL-Statement zusammengesetzt und der erste gefundene Wert ist das Ergebnis der Suche: \\
 <code>SELECT <Expression> FROM <Domain> WHERE Criteria</code> <code>SELECT <Expression> FROM <Domain> WHERE Criteria</code>
 <code> <code>
-DbLookup("", "MAX(doc_docno)", "dm_document", "") - Liefert die größte Dokumentnummer +Call DbLookup(result, "", "MAX(doc_docno)", "dm_document", "") - Liefert die größte Dokumentnummer 
-DbLookup("", "sett_value", "dm_setting", "sett_key='bom.autosorted'" - Liefert den Einstellungswert des Konfigurationsparameters [bom.autosorted]+Call DbLookup(result, "", "sett_value", "dm_setting", "sett_key='bom.autosorted'" - Liefert den Einstellungswert des Konfigurationsparameters [bom.autosorted]
 </code> </code>
 +\\
  
 === Application.Sleep(Milliseconds) === === Application.Sleep(Milliseconds) ===
 Hält die Ausführung der Anwendung an, bis das Timeout-Intervall abgelaufen ist.  Hält die Ausführung der Anwendung an, bis das Timeout-Intervall abgelaufen ist. 
 +<code>Call Application.Sleep(1000)</code>
 +\\
  
 +=== Application.GetSetting(Key) ===
 +Gibt den Wert einer Einstellung zurück. \\
 +<code>archive_path = Application.GetSetting("session.path.archive")</code>
 +\\
 +
 +=== Application.SetSetting(Key, Value) ===
 +Setzt den Wert einer Einstellung. \\
 +<code>Call Application.SetSetting("document.new.docno.zaehler", 4711)</code>
 +\\
 +
 +=== Application.GetDocumentProperty(DocNo, Property) ===
 +Gibt eine Dokumenteigenschaft des Dokuments zurück. \\
 +Mit der Methode GetDocumentProperty können alle Dokument-Eigenschaften oder auch Struktur-Eigenschaften abgefragt werden besonders dann wenn diese nicht im dictionary enthalten sind. \\
 +<code>
 +s = Application.GetDocumentProperty(dictionary.item("dm_docno"), “projectcontainer.PROJECTMANAGER“)
 +</code>
 +\\
  
 ==== Clipboard - Objekt ==== ==== Clipboard - Objekt ====
Zeile 204: Zeile 261:
 Leert die Zwischenablage Leert die Zwischenablage
 \\ \\
 +
 === Clipboard.Copy(Text) === === Clipboard.Copy(Text) ===
 Kopiert den Text in die Zwischenablage Kopiert den Text in die Zwischenablage
 \\ \\
 +
 === Clipboard.Paste === === Clipboard.Paste ===
 Gibt den aktuellen Text in der Zwischenablage zurück. Gibt den aktuellen Text in der Zwischenablage zurück.
 <code VBScript>Text = Clipboard.Paste()</code> <code VBScript>Text = Clipboard.Paste()</code>
-\\ 
 \\ \\
 \\ \\
 +
  
 ===== speedy.* ===== ===== speedy.* =====
Zeile 226: Zeile 285:
 |wparam| | |wparam| |
 |lparam| | |lparam| |
 +\\
  
-Folgende allegemeinen Ereignisse sind definiert und fürs skripting geeignet:+Folgende allgemeine Ereignisse sind definiert und fürs Skripting geeignet:
 ^Name^Beschreibung^ ^Name^Beschreibung^
 |Command::ExportDocument| | |Command::ExportDocument| |
Zeile 234: Zeile 294:
 |CDwPropertyEdit::OnEdit| | |CDwPropertyEdit::OnEdit| |
 |SWXAddin::ActiveModelDocChangeNotify| | |SWXAddin::ActiveModelDocChangeNotify| |
 +\\
  
 === Object_onCreate(timing, handling, dictionary) ===  === Object_onCreate(timing, handling, dictionary) === 
 Ein Objekt (z.B. Ordner) wird in der Datenbank erstellt. Ein Objekt (z.B. Ordner) wird in der Datenbank erstellt.
 timing = after: Objekteigenschaften des neuen Objekts werden mit ins Dictionary geschrieben timing = after: Objekteigenschaften des neuen Objekts werden mit ins Dictionary geschrieben
 +\\
  
 === Object_onDelete(timing, handling, dictionary) ===   === Object_onDelete(timing, handling, dictionary) ===  
 Ein Objekt wird in der Datenbank gelöscht. Ein Objekt wird in der Datenbank gelöscht.
 timing = before: Objekteigenschaften des zu Löschenden Objekts werden mit ins Dictionary geschrieben timing = before: Objekteigenschaften des zu Löschenden Objekts werden mit ins Dictionary geschrieben
 +\\
  
 === Object_onInit(timing, handling, dictionary) ===  === Object_onInit(timing, handling, dictionary) === 
 Ein Object-Container wird initalisiert. Ein Object-Container wird initalisiert.
 +\\
  
 === Object_onUpdate(timing, handling, dictionary) ===  === Object_onUpdate(timing, handling, dictionary) === 
 Ein Objekt wird aktualsiert, d.h. Änderungen am Objekt werden in die Datenbank geschrieben.  Ein Objekt wird aktualsiert, d.h. Änderungen am Objekt werden in die Datenbank geschrieben. 
 +\\
  
 === Object_onCopy(timing, handling, dictSource, dictTarget, dictionary) ===  === Object_onCopy(timing, handling, dictSource, dictTarget, dictionary) === 
Zeile 255: Zeile 320:
 |dictTarget| Eigenschaften ds Ziel-Objekts | |dictTarget| Eigenschaften ds Ziel-Objekts |
 |dictSource| Allgemeine Eigenschaften | |dictSource| Allgemeine Eigenschaften |
 +\\
  
 === Object_onCreateObject(timing, handling, dictionary) ===  === Object_onCreateObject(timing, handling, dictionary) === 
Zeile 268: Zeile 334:
 |CreateObject.deleteorigin| | |CreateObject.deleteorigin| |
 |CreateObject.saveascopy| | |CreateObject.saveascopy| |
 +\\
  
 === Object_onEditObject(timing, handling, dictionary) ===  === Object_onEditObject(timing, handling, dictionary) === 
Zeile 276: Zeile 343:
 |EditObject.subitem| | |EditObject.subitem| |
 |EditObject.param| | |EditObject.param| |
 +\\
  
 === Object_onBuildDocName(docno, dictVault, dictParent, dictOrigin, dictDoctype, dictProperties, timing, handling) ===  === Object_onBuildDocName(docno, dictVault, dictParent, dictOrigin, dictDoctype, dictProperties, timing, handling) === 
Zeile 286: Zeile 354:
 |dictDoctype| Eigenschaften des Ordnertyps | |dictDoctype| Eigenschaften des Ordnertyps |
 |dictProperties| Sonstiges Eigenschaften | |dictProperties| Sonstiges Eigenschaften |
- 
 \\ \\
  
 ==== Dokument-Ereignisse ==== ==== Dokument-Ereignisse ====
-In der Ereignisroutine werden außer den Allgemeinen Eigenschaft der Dokumente auch noch Dokumentspezifische Eigenschaften mit ins Dictionary geschrieben. +In der Ereignisroutine werden außer den Allgemeinen Eigenschaft der Dokumente auch noch Dokumentspezifische Eigenschaften mit in das Dictionary geschrieben. 
  
  
 === Document_onEvent(timing, handling, dictionary) ===  === Document_onEvent(timing, handling, dictionary) === 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|event|Übergibt einen Ereignis-Namen| +|"event"| Übergibt einen Ereignis-Namen |  
 +\\
  
 === Document_onBeforeImport(timing, handling, dictionary) === === Document_onBeforeImport(timing, handling, dictionary) ===
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|filename|Übergibt den Datei-Namen| +|timing | Immer kBefore | 
 +|"filename"| Übergibt den Datei-Namen |  
 +\\
  
 === Document_onCreate(timing, handling, dictionary) === === Document_onCreate(timing, handling, dictionary) ===
-timing = after: Dokumenteigenschaften des neuen Dokuments werden mit ins Dictionary geschrieben +Ereignis beim Erstellen eines Dokuments. \\ 
 +^ Parameter ^ Beschreibung ^ 
 +|timing = kAfter| Dokumenteigenschaften des neuen Dokuments werden mit ins Dictionary geschrieben. | 
 +|handling| Wenn bei timing=kAfter Eigenschaften direkt in der Datenbank angepasst werden muss das handling=kEventHandled gesetzt werden damit Die Dokument-Eigenschaften vor dem weiter arbeiten erneut eingelesen werden. | 
 + 
 +Beispiel-Code setzt die Eigenschaft ARTIKEL_ANLAGE=1 bei Dokumenten vom Typ "E" oder "K": 
 +<code vbs> 
 +Function Document_onCreate(timing, handling, dictionary) 
 +    Dim dm_docno 
 +    Dim dm_doctype 
 +    Dim sql 
 +     
 +    if timing = kAfter Then 
 +        dm_doctype = dictionary.item("dm_doctype"
 +        dm_docno = dictionary.item("dm_docno"
 +        if dm_doctype="E" Or dm_doctype="K" Then 
 +            sql = "UPDATE dm_document d inner join dm_version v on d.doc_did=v.ver_did and d.doc_rev=v.ver_major and d.doc_ver=v.ver_minor inner join dm_prop_cad p on v.ver_vid=p.prop_did SET p.ARTIKEL_ANLAGE = 1 WHERE d.doc_docno='" & dm_docno & "'" 
 +            Application.DbExecute "", sql 
 +            handling = kEventHandled 
 +            Document_onCreate = true 
 +        end if 
 +    end if 
 +End Function 
 +</code> 
 +\\
  
 ===  Document_onDelete(timing, handling, dictionary) ===  ===  Document_onDelete(timing, handling, dictionary) === 
-timing = before: Dokumenteigenschaften des zu Löschenden Douments werden mit ins Dictionary geschrieben +timing = before: Dokumenteigenschaften des zu Löschenden Dokuments werden mit ins Dictionary geschrieben 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|filename| Übergibt den Datei-Namen | +|"filename"| Übergibt den Datei-Namen |  
 +\\
  
 ===  Document_onCreateVersion(timing, handling, dictionary) === ===  Document_onCreateVersion(timing, handling, dictionary) ===
-timing = after: Dokumenteigenschaften der neuen Version des Douments werden mit ins Dictionary geschrieben +timing = after: Dokumenteigenschaften der neuen Version des Dokuments werden mit ins Dictionary geschrieben 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|revisionno|Erstellt die neue Freigabenummer|  +|"revisionno| Erstellt die neue Freigabenummer |  
-|major|Schaut nach höherer Freigabenummer| +|"major| Schaut nach höherer Freigabenummer | 
-|minor|Schaut nach niedriger Freigabenummer| +|"minor| Schaut nach niedriger Freigabenummer | 
-|status|Übergibt den aktuellen Status|+|"status| Übergibt den aktuellen Status | 
 +\\
  
 ===  Document_onDeleteVersion(timing, handling, dictionary) ===  ===  Document_onDeleteVersion(timing, handling, dictionary) === 
 timing = before: Dokumenteigenschaften der zu löschenden Version des Douments werden mit ins Dictionary geschrieben  timing = before: Dokumenteigenschaften der zu löschenden Version des Douments werden mit ins Dictionary geschrieben 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|major|Schaut nach höherer Freigabenummer| +|"major| Schaut nach höherer Freigabenummer | 
-|minor|Schaut nach niedriger Freigabenummer| +|"minor| Schaut nach niedriger Freigabenummer |  
 +\\
  
 === Document_onRemoveFile(timing, handling, dictionary) ===  === Document_onRemoveFile(timing, handling, dictionary) === 
 timing = before: Dokumenteigenschaften des zu entfernenden Douments werden mit ins Dictionary geschrieben timing = before: Dokumenteigenschaften des zu entfernenden Douments werden mit ins Dictionary geschrieben
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|filename|Übergibt den Datei-Namen| +|"filename| Übergibt den Datei-Namen |   
 +\\
  
 === Document_onStatusChange(timing, handling, dictionary) === === Document_onStatusChange(timing, handling, dictionary) ===
Zeile 332: Zeile 430:
 timing = after: Dokumenteigenschaften des neuen Dokuments werden mit ins Dictionary geschrieben  timing = after: Dokumenteigenschaften des neuen Dokuments werden mit ins Dictionary geschrieben 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|status|Übergibt den Status| +|"status| Übergibt den Status |  
 +\\
    
 ===  Document_onRelease(timing, handling, dictionary) ===  ===  Document_onRelease(timing, handling, dictionary) === 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|comment|Übergibt ein Kommentar|  +|"comment| Übergibt ein Kommentar |  
-|major|Letzte Freigabe| +|"major| Letzte Freigabe | 
-|deletelocal|Löscht die lokale Freigabe|+|"deletelocal| Löscht die lokale Freigabe | 
 +\\
  
 === Document_onPendingApproval(timing, handling, dictionary) === === Document_onPendingApproval(timing, handling, dictionary) ===
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
 |comment|Übergibt ein Kommentar| |comment|Übergibt ein Kommentar|
 +\\
  
 ===  Document_onApprove(timing, handling, dictionary) ===  ===  Document_onApprove(timing, handling, dictionary) === 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|comment|Übergibt ein Kommentar| +|"comment| Übergibt ein Kommentar |  
 +\\
  
 ===  Document_onUndoRelease(timing, handling, dictionary) ===  ===  Document_onUndoRelease(timing, handling, dictionary) === 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|comment|Übergibt ein Kommentar| +|"comment| Übergibt ein Kommentar |  
 +\\
  
 ===  Document_onCheckIn(timing, handling, dictionary) ===  ===  Document_onCheckIn(timing, handling, dictionary) === 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|extension| String. Dateierweiterung, die eingecheckt werden soll. | +|"extension| String. Dateierweiterung, die eingecheckt werden soll. | 
-|deletelocal| Boolean. Soll die lokale Datei beim einchecken gelöscht werden. | +|"deletelocal| Boolean. Soll die lokale Datei beim einchecken gelöscht werden. | 
-|force| Boolean. Erzwingt das einchecken. |+|"force| Boolean. Erzwingt das einchecken. | 
 +\\
  
 ===  Document_onCheckInNew(timing, handling, dictionary) === ===  Document_onCheckInNew(timing, handling, dictionary) ===
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|file|Übergibt eine Datei|  +|"file| Übergibt eine Datei |  
-|origin|Übergibt den Ursprungsdateiname| +|"origin| Übergibt den Ursprungsdateiname | 
-|useextension|Nutzt die Datei-Extension separat| +|"useextension| Nutzt die Datei-Extension separat | 
-|deletelocal|Löscht die lokale Freigabe|+|"deletelocal| Löscht die lokale Freigabe | 
 +\\
    
 ===  Document_onCreateFile(timing, handling, dictionary) ===  ===  Document_onCreateFile(timing, handling, dictionary) === 
 timing = after: Dokumenteigenschaften des neuen Douments werden mit ins Dictionary geschrieben timing = after: Dokumenteigenschaften des neuen Douments werden mit ins Dictionary geschrieben
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|template|Übergibt das Template separat|  +|"template| Übergibt das Template separat |  
-|extension|Übergibt die Datei-Extension separat|+|"extension| Übergibt die Datei-Extension separat | 
 +\\
  
 ===  Document_onCheckOut(timing, handling, dictionary) ===  ===  Document_onCheckOut(timing, handling, dictionary) === 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|extension| String. Dateierweiterung, die ausgecheckt werden soll. | +|"extension| String. Dateierweiterung, die ausgecheckt werden soll. | 
-|force| Boolean. Erzwingt das auschecken. | +|"force| Boolean. Erzwingt das auschecken. | 
-|path| String. Verzeichnis in das ausgecheckt wird. |+|"path| String. Verzeichnis in das ausgecheckt wird. | 
 +\\
  
 ===  Document_onCheckOutReleased(timing, handling, dictionary) ===  ===  Document_onCheckOutReleased(timing, handling, dictionary) === 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|extension| String. Dateierweiterung, die ausgecheckt werden soll. | +|"extension| String. Dateierweiterung, die ausgecheckt werden soll. | 
-|force| Boolean. Erzwingt das auschecken. | +|"force| Boolean. Erzwingt das auschecken. | 
-|path| String. Verzeichnis in das ausgecheckt wird. |+|"path| String. Verzeichnis in das ausgecheckt wird. | 
 +\\
  
 ===  Document_onCheckOutIn(timing, handling, dictionary) ===  ===  Document_onCheckOutIn(timing, handling, dictionary) === 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|extension| String. Dateierweiterung, die ausgecheckt werden soll. | +|"extension| String. Dateierweiterung, die ausgecheckt werden soll. | 
-|force| Boolean. Erzwingt das auschecken. |+|"force| Boolean. Erzwingt das auschecken. | 
 +\\
  
 ===  Document_onUndoCheckOut(timing, handling, dictionary) ===  ===  Document_onUndoCheckOut(timing, handling, dictionary) === 
Zeile 400: Zeile 509:
 timing = after: Dokumenteigenschaften des zu öffnenden Dokuments werden mit ins Dictionary geschrieben  timing = after: Dokumenteigenschaften des zu öffnenden Dokuments werden mit ins Dictionary geschrieben 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|extension|Übergibt die Datei-Extension separat|  +|"extension| Übergibt die Datei-Extension separat |  
-|readonly|Öffnet die Datei nur lesend| +|"readonly| Öffnet die Datei nur lesend | 
-|waitforexecute|Wartet bis etwas ausgeführt ist| +|"waitforexecute| Wartet bis etwas ausgeführt ist | 
- +\\ 
 === Document_onPrint(timing, handling, dictionary) ===  === Document_onPrint(timing, handling, dictionary) === 
 timing = after: Dokumenteigenschaften des zu Druckenden Dokuments werden mit ins Dictionary geschrieben  timing = after: Dokumenteigenschaften des zu Druckenden Dokuments werden mit ins Dictionary geschrieben 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|extension|Übergibt die Datei-Extension separat| +|"extension| Übergibt die Datei-Extension separat |  
 +\\
  
 === Document_onView(timing, handling, dictionary) ===  === Document_onView(timing, handling, dictionary) === 
 timing = after: Dokumenteigenschaften des zum Viewen geöffneten Dokuments werden mit ins Dictionary geschrieben  timing = after: Dokumenteigenschaften des zum Viewen geöffneten Dokuments werden mit ins Dictionary geschrieben 
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|extension|Übergibt die Datei-Extension separat|+|"extension| Übergibt die Datei-Extension separat | 
 +\\
  
 +=== Document_getRevisionLabel(timing, handling, dictionary) ===
 +Das Revisions-Label kann angepasst werden. Übergabe ist das Standard Label in der Form "<major>.<minor>". \\ Wenn die Funktion das Label verändert hat muss sie true zurück liefern und den Handling-Code setzen. \\ Im Dictionary ist die Eigenschaft "dm_revlabel" entsprechend anzupassen. \\ Der Konfigurationsparameter [session.revlabel] ist auf 0 zu setzen.
 +^ Eigenschaft ^ Beschreibung ^
 +|"dm_revlabel" | Revision-Label |
 +
 +<code vbs>
 +Public Function Document_getRevisionLabel(timing, handling, dictionary)
 +  Dim revlabel
 +  Dim major
 +  Dim minor
 +  Dim i1
 +
 +  revlabel = dictionary.Item("dm_revlabel")
 +  i1 = InStr(revlabel, ".")
 +  If i1 > 0 Then
 +    major = CLng(Left(revlabel, i1))
 +    minor = CLng(Mid(revlabel, i1+1))
 +  Else
 +    major = 0
 +    minor = 0
 +  End If
 +  
 +  if minor = 0 then
 +    Select Case CLng(major)
 +    Case 0
 + dictionary.Item("dm_revlabel") = "*"
 +    Case 1
 + dictionary.Item("dm_revlabel") = "-"
 +    Case Else
 + dictionary.Item("dm_revlabel") = CStr(major-1)
 +    end select 
 +    handling = kEventHandled
 +    Document_getRevisionLabel = true
 +  end if
 +End Function
 +</code>
 +
 +\\
  
 ==== Document Operations-Ereignisse ==== ==== Document Operations-Ereignisse ====
Zeile 421: Zeile 571:
 <code>Function DocumentOperations_onCopyDocument(timing, handling, source, target, dictionary)</code> <code>Function DocumentOperations_onCopyDocument(timing, handling, source, target, dictionary)</code>
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|source| Eigenschaften des Quell Dokuments. | +|source | Eigenschaften des Quell Dokuments. | 
-|target| Eigenschaften des Ziel Dokuments. | +|target | Eigenschaften des Ziel Dokuments. | 
-|dictionary| Eigenschafen des Dokumenttyps. |+|dictionary | Allgemeine Eigenschaften und evtl. Rückgabewert. | 
 + 
 +Es kann sowohl vor der Kopier-Operation als auch nach dem Kopieren reagiert werden (timing). \\ 
 +Wenn bei einem kopierten Dokument Daten geändert werden sollen (timing=kAfter) muss dies direkt auf der Datenbank erfolgen.  
 +Damit diese Änderung vom System erkannt wird müssen folgende Rückgaben erfolgen: 
 +<code> 
 +handling = kEventHandled 
 +DocumentOperations_onCopyDocument = 0 
 +dictionary.item("target.refresh") = True 
 +</code> 
 + 
 +Das nachfolgende Beispiel ändert den "LAGERORT" in dem kopierten Dokument und vergibt eine neue Nummer. \\ 
 +In der Tabelle [dm_setting] muss zuvor ein Eintrag für "document.new.docno.zaehler" erstellt werden.  
 +<code> 
 +Function DocumentOperations_onCopyDocument(timing, handling, source, target, dictionary) 
 +    On Error Resume Next 
 +    Dim docno 
 +    Dim doctype 
 +    Dim dtype_proptable 
 +    Dim zaehler 
 +    Dim sql 
 +     
 +    if timing = kAfter then 
 +        docno = target.item("dm_docno"
 +        doctype = target.item("dm_doctype"
 +        'MsgBox "DocumentOperations_onCopyDocument:=" & docno 
 +         
 +        if DbLookup(dtype_proptable, "", "dtype_proptable", "dm_doctype", "dtype_name='" & doctype & "'") = 0 then 
 +            if CStr(dtype_proptable) = "dm_prop_cad" then 
 +                if DbLookup(zaehler, "", "sett_value", "dm_setting", "sett_key='document.new.docno.zaehler'") = 0 then 
 +                    zaehler = CLng(zaehler) + 1 
 + 
 +                    sql = "UPDATE dm_setting SET sett_value ='" & Cstr(zaehler) & "' where sett_key ='document.new.docno.zaehler'" 
 +                    'MsgBox sql 
 +                    Call DbExecute("", sql)  
 +                     
 +                    sql = "UPDATE dm_document d " & _ 
 +                        "inner join dm_version v on d.doc_did=v.ver_did and d.doc_rev=v.ver_major and d.doc_ver=v.ver_minor " & _ 
 +                        "inner join dm_prop_cad p on v.ver_vid=p.prop_did " & _ 
 +                        "set p.LAGERORT='" & Cstr(zaehler) & "' " & _ 
 +                        "WHERE d.doc_docno='" & docno & "'" 
 +                    'MsgBox sql 
 +                    Call DbExecute("", sql) 
 +                     
 +                    handling = kEventHandled 
 +                    DocumentOperations_onCopyDocument = 0 
 +                    dictionary.item("target.refresh") = True 
 +                end if 
 +            end if 
 +        end if 
 +    end if 
 +End Function 
 +</code> 
 +\\
  
 ==== Container-Ereignisse ==== ==== Container-Ereignisse ====
Zeile 429: Zeile 632:
 === Container_onDeleteBomStructure(timing, handling, dictionary) === === Container_onDeleteBomStructure(timing, handling, dictionary) ===
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|docno|Übergibt die Dokumenten-Nummer|+|"docno| Übergibt die Dokumenten-Nummer | 
 +\\
  
 === Container_onAddDocument(timing, handling, dictionary) === === Container_onAddDocument(timing, handling, dictionary) ===
Zeile 435: Zeile 639:
 |Document|Alle Eigenschaften des Dokument werden übergeben| |Document|Alle Eigenschaften des Dokument werden übergeben|
 |Container|Alle Eigenschaften  des Containers werden übergeben| |Container|Alle Eigenschaften  des Containers werden übergeben|
 +\\
  
 === Container_onRemoveDocument(timing, handling, dictionary) === === Container_onRemoveDocument(timing, handling, dictionary) ===
Zeile 440: Zeile 645:
 |Document|Alle Eigenschaften des Dokument werden übergeben| |Document|Alle Eigenschaften des Dokument werden übergeben|
 |Container|Alle Eigenschaften  des Containers werden übergeben| |Container|Alle Eigenschaften  des Containers werden übergeben|
 +\\
 +
 +==== Nummern-Generator-Ereignisse ====
 +
 +=== ParamName_onBuild(timing, handling, dictionary) ===
 +Erstellt eine neue Nummer für ein neues Dokument, eine neue Variante, einen neuen Ordner. \\ 
 +Die Funktion wird immer dann aufgerufen, wenn ein neuer Name/neue Nummer basierend auf der Nummerngenerator-Syntax erstellt werden muss.
 +
 +^Eigenschaft^I/O^Beschreibung^
 +| | Alle Eigenschaften der Eltern Objekte, um eine neue Nummer zu erstellen. |
 +|"docno" | input/output | Bereits berechnete Dokumentnummer. \\ Rückgabe der berechneten Dokumentnummer. |
 +|"class" | input | "CDwDocumentName" := Nummerngenerator für ein neues Dokument. \\ "CZvParamName" := Nummerngenerator für alles andere (Ordner, Variante, ...) |
 +
 +Beispiel Dokumentnummer generieren:
 +<code>
 +Function ParamName_onBuild(ByVal timing, handling, dictionary)
 +    On Error Resume Next
 +    Dim conn ' As ADODB.Connection
 +    Dim rs ' As ADODB.Recordset
 +    Dim fld ' As ADODB.Field
 +    Dim sql
 +    Dim myYear
 +    Dim myMonth
 +    Dim myDocno
 +    Dim myMaxnumber
 +    Dim doctypkennung
 +    Dim doctype
 +
 +    If timing = kBefore Then
 +        If dictionary.item("class") = "CDwDocumentName" Then
 +            'MsgBox "dm_doctype:=" & dictionary.item("dm_doctype")
 +            
 +            'Berechnen der Dokumentennummer
 +            myYear = DatePart("yyyy",Now())
 +            'MsgBox myYear
 +            myDocno = 0
 +            myMaxnumber = 0
 +            Set conn = dictionary.Item("session.database")
 +            Set rs = CreateObject("ADODB.Recordset")
 +            sql = "SELECT MAX(RIGHT(d.doc_docno,6)) FROM dm_document d WHERE d.doc_docno REGEXP '[-]{1}[1]{1}[0-9]*$'"
 +            
 +            rs.Open sql, conn, adOpenForwardOnly, adLockReadOnly
 +            If rs.State = adStateOpen and Not rs.EOF Then
 +                for each fld in rs.Fields
 +                    myMaxnumber = fld.Value
 +                next
 +            End if
 +
 +            If IsNull(myMaxnumber) Then
 +                myMaxnumber = 0
 +            End if
 +            myMaxnumber = CLng(myMaxnumber) + 1
 +            
 +            Select case dictionary.item("dm_doctype")
 +                case "A"
 +                 doctypkennung = "00-1"
 +                case "B"
 +                 doctypkennung = "00-1"
 +                case "E"
 +                 doctypkennung = "01-1"
 +                case "ES"
 +                 doctypkennung = "05-1"
 +                case "GRT"
 +                 doctypkennung = "06-1"
 +                case "HT"
 +                 doctypkennung = "99-1"
 +                case "K"
 +                 doctypkennung = "02-1"
 +                case "N"
 +                 doctypkennung = "03-1"
 +                case "NE"
 +                 doctypkennung = "04-1"
 +                case "S"
 +                 doctypkennung = "08-1"
 +                case "VB"
 +                 doctypkennung = "11-1"
 +                case "VS"
 +                 doctypkennung = "07-1"
 +                case else
 +                 doctypkennung = "00-1"
 +            End select
 +            
 +            myDocno = Right(myYear,2) + "-" + doctypkennung + Right("000000" & CLng(myMaxnumber), 6)
 +            'MsgBox myDocno
 +            
 +            doctype = dictionary.item("dm_doctype")
 +            'Setzen von Dokumentennummer
 +            dictionary.Removeall
 +            dictionary.add "docno", myDocno
 +            
 +            handling = kEventHandled
 +            ParamName_onBuild = true
 +
 +        End if
 +    End if
 +End Function
 +</code>
 +
 +
 +=== ParamName_onGetClass(timing, handling, dictionary) ===
 +^ Eigenschaft ^ Beschreibung ^
 +| | Alle Eigenschaften des Dokument werden übergeben |
 +|"class" | Ermittelter Klassenname als Rückgabe. |
  
 \\ \\
 +
 ==== File-Ereignisse ==== ==== File-Ereignisse ====
 Ereignisse, die im Zusammenhang mit Dateioperationen auftreten. Ereignisse, die im Zusammenhang mit Dateioperationen auftreten.
Zeile 449: Zeile 758:
 |params| Dictionary mit allgemeinen Eigenschaften | |params| Dictionary mit allgemeinen Eigenschaften |
 |mapfiles| Dictionary mit Datei-Mapping Alter-Dateiname<=>Neuer-Dateiname | |mapfiles| Dictionary mit Datei-Mapping Alter-Dateiname<=>Neuer-Dateiname |
 +\\
  
 ^ Params-Eigenschaft ^ Beschreibung ^ ^ Params-Eigenschaft ^ Beschreibung ^
Zeile 455: Zeile 765:
 |msg| Sollen Fehlermeldungen ausgegeben werden | |msg| Sollen Fehlermeldungen ausgegeben werden |
 |force| Erzwingen | |force| Erzwingen |
 +\\
  
 === FileOperations_onGetFileDependencies(timing, handling, dictionary, dependencies) === === FileOperations_onGetFileDependencies(timing, handling, dictionary, dependencies) ===
Zeile 460: Zeile 771:
 |dictionary| Allgemeine Eigenschaften | |dictionary| Allgemeine Eigenschaften |
 |dependencies| String-Array mit den Dependencies | |dependencies| String-Array mit den Dependencies |
 +\\
  
 === FileOperations_onReplaceReferencedFiles(timing, handling, dictionary, filename, mapReplacements) === === FileOperations_onReplaceReferencedFiles(timing, handling, dictionary, filename, mapReplacements) ===
Zeile 466: Zeile 778:
 |filename| | |filename| |
 |mapReplacements| | |mapReplacements| |
 +\\
  
 === FileOperations_onFileSaveAs(timing, handling, dictionary) === === FileOperations_onFileSaveAs(timing, handling, dictionary) ===
 +Ereignis-Routine wird von der Zusatzfunktion "Speichern als" im Explorer aufgerufen. \\
 +Damit kann bei den von "Speichern als" unterstützten Dateiformaten gesondert reagiert werden. \\
 +Wird mit einem Skript auf ein Dateiformat reagiert ist darauf zu achten, dass das Scripting-Modul (modScript7.dll) vor den CAD-Modulen (mod<CAD>.dll) geladen wird und bei erfolgreicher Abarbeitung den Übergabeparameter handling mit kEventHandled 
 + zurückliefert. \\
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|filename|Übergibt den Datei-Pfad| +|filename | Übergibt den Datei-Pfad | 
-|target|Übergibt den Zielpfad| +|target | Übergibt den Zielpfad | 
-|pages|Übergibt ob alle Seiten gespeichert wird oder nur die erste|+|pages | Übergibt ob alle Seiten gespeichert wird oder nur die erste | 
 +\\
  
 === FileOperations_onAppRelease() === === FileOperations_onAppRelease() ===
Zeile 477: Zeile 795:
  
 === FileOperations_onFileExport(timing, handling, dictionary) === === FileOperations_onFileExport(timing, handling, dictionary) ===
-^ Eigenschaft ^ Beschreibung ^+Ereignis-Routine wird beim Exportieren einer Datei aufgerufen. \\  
 +^Dictionary-Eigenschaft ^ Beschreibung ^
 |source| Dateiname inkl. Pfad der Quelldatei. | |source| Dateiname inkl. Pfad der Quelldatei. |
 |target| Dateiname inkl. Pfad der Zieldatei. | |target| Dateiname inkl. Pfad der Zieldatei. |
-Das dictionary enthält zusätzlich die Eigenschaften des Dokuments. \\ Wenn das timing-Argument den Wert kUpdateUI hat kann der Dictionary Eintrag für den "target" durch einen neuen Dateinamen inkl. Pfadangabe ersetzt werden. Wurde das Exportziel "target" verändert muss das Argument handling den Wert kEventHandled erhalten. \\ z.B.: \\+Das Dictionary enthält die Eigenschaften des Dokuments sowie die Eigenschaften des Dateiobjekts. \\ Die internen Eigenschaften Dateiobjekts beginnen mit "file_" Die zusätzlichen Eigenschaften des Dateiobjekts beginnen mit "file." damit keine Überschneidung mit den Zusatzeigenschaften des Dokuments bestehen. \\  
 +Wenn das timing-Argument den Wert kUpdateUI hat kann der Dictionary Eintrag für den "target" durch einen neuen Dateinamen inkl. Pfadangabe ersetzt werden. Wurde das Exportziel "target" verändert muss das Argument handling den Wert kEventHandled erhalten. \\ z.B.: \\
 <code  VBScript> <code  VBScript>
 Public Function FileOperations_onFileExport(ByVal timing, handling, dictionary) Public Function FileOperations_onFileExport(ByVal timing, handling, dictionary)
Zeile 498: Zeile 818:
 </code> </code>
  
 +<note important>Damit die Ereignis-Routine auch beim Drag&Drop aufgerufen wird muss der Konfigurationsparameter [session.export.hasfileexportevent] aktiviert sein. </note>
 \\ \\
  
Zeile 633: Zeile 954:
 \\  \\ 
 ===== document.* ===== ===== document.* =====
-Die Skriptdatei "document" enthält Ereignisse, die im Neu- und Eigenschaften-Dialogs eines Dokuments aufgerufen werden.  +Die Script-Datei "document" enthält Ereignisse, die im Neu- und Eigenschaften-Dialog eines Dokuments aufgerufen werden.  
-Sobald Scriptdatei im Script-Ordner gefunden wurde, erscheint neben der Dokumentnummer eine Schaltfläche.  +Sobald die Script-Datei im Script-Ordner gefunden wurde, erscheint neben der Dokumentnummer eine Schaltfläche. \\ 
-Beispielecodes sind unter **../script/example/document.example.vbs** für sie bereitgelegt.+Beispiel-Codes befinden sich im Verzeichnis **../script/example/document.example.vbs**.
 \\ \\
  
Zeile 641: Zeile 962:
 Wird durch betätigen der Schaltfläche rechts neben der Dokumentnummer aufgerufen Wird durch betätigen der Schaltfläche rechts neben der Dokumentnummer aufgerufen
 ^Parameter^Beschreibung^ ^Parameter^Beschreibung^
-|kBefore|Zeitpunkt wann die Aktion ausgeführt werden soll(Hier unrelevant)|+|kBefore|Zeitpunkt wann die Aktion ausgeführt werden soll (hier unrelevant)|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 **Rückgabe:** true oder 1 := Das Dictionary enthält Eigenschaften, die in den Dialog zu übernehmen sind. **Rückgabe:** true oder 1 := Das Dictionary enthält Eigenschaften, die in den Dialog zu übernehmen sind.
-\\ \\+<code> 
 +Function OnBrowse(lEventTiming, dictionary) 
 +  OnBrowse = False 
 +  If dictionary.Item("dlgmode") = "new" Then 
 +    ' z.B. Dictionary mit Eigenschaften befüllen, die im Neu-Dialog zu übernehmen sind 
 +    OnBrowse = True 
 +  ElseIf dictionary.Item("dlgmode") = "edit" Then 
 +    ' z.B. Dictionary mit Eigenschaften befüllen, die im Eigenschaften-Dialog zu übernehmen sind 
 +    OnBrowse = True 
 +  End If 
 +End Function 
 +</code> 
 +\\ 
  
 === OnValidate(kBefore, dictionary) === === OnValidate(kBefore, dictionary) ===
 Wird beim Bestätigen des Neu-Dialogs vor dem Erstellen eines neuen Dokuments aufgerufen Wird beim Bestätigen des Neu-Dialogs vor dem Erstellen eines neuen Dokuments aufgerufen
 ^Parameter^Beschreibung^ ^Parameter^Beschreibung^
-|kBefore|Zeitpunkt wann die Aktion ausgeführt werden soll(Hier unrelevant)|+|kBefore|Zeitpunkt wann die Aktion ausgeführt werden soll (hier unrelevant)|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 **Rückgabe:** 1 := Das Dictionary enthält Eigenschaften, die in den Dialog zu übernehmen sind. **Rückgabe:** 1 := Das Dictionary enthält Eigenschaften, die in den Dialog zu übernehmen sind.
Zeile 663: Zeile 996:
 |dictionary | Übergibt das Dictionary Objekt | |dictionary | Übergibt das Dictionary Objekt |
 **Rückgabe:** 1  :=  Das Dictionary enthält Eigenschaften, die in den Dialog zu übernehmen sind. **Rückgabe:** 1  :=  Das Dictionary enthält Eigenschaften, die in den Dialog zu übernehmen sind.
-\\ \\ \\+\\ \\ 
 + 
 +=== OnPopulateNew(kBefore, dictionary) === 
 +Wird beim Öffnen des Neu-Dialogs vor dem Erstellen eines neuen Dokuments aufgerufen 
 +^Parameter^Beschreibung^ 
 +|kBefore | Zeitpunkt wann die Aktion ausgeführt wird (hier unrelevant) | 
 +|dictionary | Übergibt das Dictionary Objekt | 
 +**Rückgabe:** 1 := Das Dictionary enthält Eigenschaften, die in den Dialog zu übernehmen sind. 
 + 
 +\\ \\
  
 ===== container.* ===== ===== container.* =====
Zeile 680: Zeile 1022:
  
 === OnValidate(kBefore, dictionary) === === OnValidate(kBefore, dictionary) ===
-Wird beim Bestätigen des Neu-Dialogs vor dem Erstellen eines neuen Ordners aufgerufen+Wird beim klicken der 3 Punkte neben dem Ordnername aufgerufen. Des weiteren kann die Funktion beim Bestätigen des Neu-Dialogs aufgerufen werden. Dazu muss die Eigenschaft **container.new.validate** muss aktiv sein. Die Funktion wird beim Neu erstellen oder beim ändern von Eigenschaften aufgerufen. 
 ^Parameter^Beschreibung^ ^Parameter^Beschreibung^
 |kBefore|Zeitpunkt wann die Aktion ausgeführt werden soll(Hier unrelevant)| |kBefore|Zeitpunkt wann die Aktion ausgeführt werden soll(Hier unrelevant)|
Zeile 697: Zeile 1040:
 Ereignis-Routine beim Speichern. Ereignis-Routine beim Speichern.
 ^Parameter^Beschreibung^ ^Parameter^Beschreibung^
 +|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 +|dictionary|Übergibt das Dictionary Objekt|
 +\\
 +
 +=== OnFileSaveAs(lEventTiming, dictionary) ===
 +Ereignis-Routine beim Speichern unter.
 +^ Eigenschaft ^ Beschreibung ^
 |lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll| |lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
Zeile 704: Zeile 1054:
 Ereignis-Routine beim Einchecken. Ereignis-Routine beim Einchecken.
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 711: Zeile 1061:
 Ereignis-Routine beim Freigeben. Ereignis-Routine beim Freigeben.
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 718: Zeile 1068:
 Ereignis-Routine zum Speichern beim Freigeben. Ereignis-Routine zum Speichern beim Freigeben.
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 725: Zeile 1075:
 Ereignis-Routine zum Speichern bei Antrag auf Prüfung Ereignis-Routine zum Speichern bei Antrag auf Prüfung
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 732: Zeile 1082:
 Ereignis-Routine zum Speichern bei Prüfung Ereignis-Routine zum Speichern bei Prüfung
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 739: Zeile 1089:
 Ereignis-Routine die beim öffnen einer Datei ausgeführt wird. Ereignis-Routine die beim öffnen einer Datei ausgeführt wird.
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\ \\ \\ \\ \\
Zeile 751: Zeile 1101:
 Ereignis-Routine beim Speichern. Ereignis-Routine beim Speichern.
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 758: Zeile 1108:
 Ereignis-Routine beim Speichern unter. Ereignis-Routine beim Speichern unter.
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 765: Zeile 1115:
 Ereignis-Routine beim Einchecken Ereignis-Routine beim Einchecken
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 772: Zeile 1122:
 Ereignis-Routine beim Freigeben Ereignis-Routine beim Freigeben
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 779: Zeile 1129:
 Ereignis-Routine zum Speichern beim Freigeben Ereignis-Routine zum Speichern beim Freigeben
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 786: Zeile 1136:
 Ereignis-Routine zum Speichern bei Antrag auf Prüfung Ereignis-Routine zum Speichern bei Antrag auf Prüfung
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 793: Zeile 1143:
 Ereignis-Routine zum Speichern bei Prüfung Ereignis-Routine zum Speichern bei Prüfung
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 \\ \\
Zeile 801: Zeile 1151:
 Wird z.B. vom speedy-Zusatzbefehl "Speichern unter" verwendet. Wird z.B. vom speedy-Zusatzbefehl "Speichern unter" verwendet.
 ^ Eigenschaft ^ Beschreibung ^ ^ Eigenschaft ^ Beschreibung ^
-|lEventTiming|Zeitpunkt wann die aktion Ausgeführt werden soll|+|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 |dictionary|Übergibt das Dictionary Objekt| |dictionary|Übergibt das Dictionary Objekt|
 +\\
 +
 +=== OnFileOpen(lEventTiming, dictionary) ===
 +Ereignis-Routine die beim öffnen einer Datei ausgeführt wird.
 +^ Eigenschaft ^ Beschreibung ^
 +|lEventTiming|Zeitpunkt wann die Aktion ausgeführt werden soll|
 +|dictionary|Übergibt das Dictionary Objekt|
 +
 \\ \\ \\ \\ \\ \\