Das ActiveX-Control 'OXACTIVE'
Über das ActiveX-Control oxactive.dll stehen Ihnen Methoden und Objekte zur Verfügung, mit denen Sie Daten aus der Übergabedatei und aus Konfigurationsdateien leicht auslesen und ändern können.
Das Control wird bei der Installation von enaio® automatisch installiert und registriert.
Das Control können Sie direkt über das VBScript-AddOn im VBScript-Editor benutzen. Aus anderen Umgebungen können Sie das ActiveX-Control oxactive.dll folgendermaßen einbinden:
CoxHelp |
Schnittstelle zur Unterstützung der VBScript-Programmierung Die Objekterstellung in VBScript: Dim x Set x = CreateObject('oxactive.CoxHelp') |
Methoden
GetProfString()
HRESULT GetProfString(BSTR bstrSec, BSTR bstrKey, BSTR bstrDefault, VARIANT* pvarReturn, BSTR bstrFile)
Diese Funktion stellt die Funktionalität der Windows-API Funktion GetPrivateProfileString zur Verfügung.
Input: |
BSTR bstrSec |
der Abschnittsname in der Übergabe-Datei |
|
BSTR bstrKey |
der Schlüsselname in diesem Abschnitt |
|
BSTR bstrDefault |
Default-Rückgabewert, wenn kein Wert ermittelt werden kann |
|
BSTR bstrFile |
Dateiname der Übergabe-Datei |
Output: |
VARIANT* pVarReturn |
ermittelter Schlüsselwert als String |
Beispiel:
oxhelp.GetProfString "PAGE00","#OSEXP#",-1,rvalue,osfile
Falls der Wert ermittelt werden kann, wird der Wert des Schlüssels '#OSEXP#' des Abschnitts 'PAGE00' in die Variable 'rvalue' geschrieben, andernfalls '-1'.
WriteProfString()
HRESULT WriteProfString(BSTR bstrSection, BSTR bstrKey, BSTR bstrValue, BSTR bstrFile)
Diese Funktion stellt Ihnen die Funktionalität der Windows-API Funktion WritePrivateProfileString zur Verfügung.
Input: |
BSTR bstrSection |
der Abschnittsname in der Übergabe-Datei |
|
BSTR bstrKey |
der Schlüsselname in der Übergabe-Datei |
|
BSTR bstrValue |
Der Wert des Schlüssels |
|
BSTR bstrFile |
Pfad und Dateiname der Übergabe-Datei |
Output: |
- |
|
Bevor die Methode oxhelp.WriteProfString() verwendet werden kann, rufen Sie die Methode WriteToFile() auf.
ExtractString()
HRESULT ExtractString(BSTR strVal, VARIANT* pFieldName, VARIANT* pFieldValue)
Mit dieser Funktion teilen Sie einen String in zwei Hälften. Das Trennzeichen muss entweder das Zeichen '\021' oder ASCII-Code '17' sein.
Input: |
BSTR strVal |
String, der in zwei Hälften geteilt werden soll |
Output: |
VARIANT* pFieldName |
linke Hälfte des Strings bis zum Trennzeichen |
|
VARIANT* pFieldValue |
rechte Hälfte des Strings ab dem Trennzeichen |
WinExec()
HRESULT WinExec(BSTR strFile, BSTR strParams)
Über diese Funktion können Sie Anwendungen starten und diesen Parameter übergeben.
Input: |
BSTR strFile |
Dateiname der Anwendung |
|
BSTR strParams |
Kommandozeilenparameter |
Output: |
- |
|
Objekte
Folgende Objekte stellt das ActiveX-Control oxactive.dll zur Verfügung:
-
ASFile-Objekt: bietet Zugriff auf die AddOn- bzw. Event-Übergabedatei
-
RequestPages-Objekt: umfasst alle Register einer Indexdatenmaske (Kollektion von RequestPage-Objekten)
-
RequestPage-Objekt: ein einzelnes Datenblatt
-
ActivePage-Objekt: hierbei handelt es sich um ein spezielles RequestPage-Objekt, nämlich einen Verweis auf das aktive Datenblatt
-
ASFields-Objekt: umfasst alle Felder einer Indexdatenmaske (Kollektion aller ASField-Objekte)
-
ASField-Objekt: ein einzelnes Feld einer Maske
Über diese Objekte lesen Sie Daten der Übergabedatei und verändern diese.
Beispiel:
Sie können den Wert des Felds 'Jahr' über eine der beiden folgenden Varianten auslesen:
ActivePage.ASFields.Item("Jahr").Value
RequestPages.Item("WF-Protokoll").ASFields.Item("Jahr").Value
Bei a) wird das Feld über das ActivePage-Objekt ausgelesen, bei b) über die RequestPages-Kollektion.
ASFile-Objekt
Das ASFile-Objekt bietet Ihnen Zugriff auf die AddOn- bzw. Event-Übergabedatei. Diese Übergabedatei enthält Informationen zur Indexdatenmaske.
Eigenschaften:
L – nur Lesezugriff
S – nur Schreibzugriff
L/S – Lese- und Schreibzugriff
ActivePage |
Liefert ein RequestPage-Objekt des gerade aktiven (oben liegenden) Datenblattes. |
L |
AddonFields |
Nur für AddOns. Liefert eine Kollektion von ASField-Objekten der Felder, die mit dem AddOn verbunden sind. Das erste Element ist genau das Feld, dem die AddOn-Schaltfläche zugeordnet ist. Über die anderen Elemente dieser Kollektion erhalten Sie Zugriff auf alle Felder, die mit dem AddOn verbunden sind. |
L |
ErrorMessage |
Für die Events 'BeforeValidate' und 'OnItemClick' können Sie hier in Verbindung mit der Eigenschaft 'ASField.IsErrorField' einen Fehlertext angeben, der dann in einem Info-Fenster angezeigt wird. Voraussetzung ist, dass der ResultCode ungleich 0 ist (siehe Beispiel 4). |
L/S |
EventAction |
Nur für Events. Mögliche Werte sind: NEW – es wird ein neues Objekt angelegt. UPDATE – ein bestehendes Objekt wird bearbeitet. REQUEST – es wird eine Suche durchgeführt READONLY – ein bestehendes Objekt ist schreibgeschützt geöffnet. |
L |
EventCode |
Gibt den numerischen EventCode zurück (siehe 'Clientseitige Events'). |
L |
Filename |
Dateiname der zu verwendenden Datei einschließlich vollständigem Pfad, normalerweise der Dateiname der jeweiligen Übergabedatei. |
L/S |
FOLDERID |
Liefert die ID des Ordners, in dem das Objekt liegt, zurück. |
L |
FOLDERTYPE |
Liefert den numerischen Ordnertyp zurück. |
L |
Handle |
Ziehpunkt der Indexdatenmaske. |
L |
IsErrorField |
Gibt an, ob dieses Feld als fehlerhaft auf der Indexdatenmaske markiert wird. |
L/S |
REGISTERID |
Liefert die ID des Registers, in dem das Objekt liegt, zurück. |
L |
REGISTERTYPE |
Liefert den numerischen Registertyp zurück. |
L |
RequestPages |
Kollektion von RequestPage Objekten aller Datenblätter der aktuellen Indexdatenmaske. |
L |
ResultCode |
Nur für Events. Wird der Wert auf '1' gesetzt, werden alle Änderungen übernommen. Standardwert: '0' |
L/S |
TARGETMAINTYPE |
Liest bzw. schreibt den Haupttyp des Dokuments. |
L/S |
Methoden:
WriteToFile() |
Schreibt alle Objekte und Eigenschaften in die Übergabedatei zurück. Der Dateiname wird der Eigenschaft Filename entnommen. Rückgabewerte: '10' – Datei existiert nicht '11' – keinen Dateinamen angegeben |
RequestPages-Objekt
Über dieses Objekt erhalten Sie Zugriff auf eine Kollektion von RequestPage-Objekten.
Eigenschaften:
L – nur Lesezugriff
S – nur Schreibzugriff
L/S – Lese- und Schreibzugriff
Count |
Anzahl der Elemente dieser Kollektion |
L |
Methoden:
Item(VARIANT Item) |
Liefert ein Element aus dieser Kollektion. Parameter: Item – hier können Sie entweder den Index oder den Namen des gewünschten Elements angeben. |
RequestPage-Objekt
Dieses Objekt erlaubt Ihnen Zugriff auf ein einzelnes Datenblatt der Indexdatenmaske.
Eigenschaften:
L – nur Lesezugriff
S – nur Schreibzugriff
L/S – Lese- und Schreibzugriff
Active |
'1' wenn diese Seite die oben liegt, sonst '0' |
L |
ASFields |
ASField-Kollektion aller Felder dieser Seite |
L |
FileCount |
Anzahl der Dateien zu einem Dokument |
L |
ID |
ID des Objekts |
L |
Name |
Name des Datenblattes |
L |
ObjectType |
Objekttyp dieser Seite |
L |
ASFields-Objekt
Dieses Objekt stellt eine Kollektion von ASField-Objekten dar.
Eigenschaften:
L – nur Lesezugriff
S – nur Schreibzugriff
L/S – Lese- und Schreibzugriff
Count |
Anzahl der Elemente dieser Kollektion |
L |
Methoden:
Item(VARIANT Item) |
Liefert ein Element aus dieser Kollektion Parameter: Item – hier können Sie entweder den Index oder den Namen des gewünschten Elements angeben. |
ASField-Objekt
Über dieses Objekt erhalten Sie Zugriff auf ein einzelnes Feld in einer Anfragemaske.
Eigenschaften:
L – nur Lesezugriff
S – nur Schreibzugriff
L/S – Lese- und Schreibzugriff
CtrlPages |
Kollektion aller Register eines Pagecontrols. |
L |
DBName |
Name des Felds in der Datenbank |
L |
Enabled |
Auf FALSE gesetzt, wird das entsprechende Feld in der Maske schreibgeschützt. |
L/S |
Required |
Auf TRUE gesetzt, wird das entsprechende Feld zu einem Pflichtfeld. Eine Pflichtfeldeigenschaft aus enaio® editor kann nicht deaktiviert werden. |
L/S |
GUID |
Liefert die GUID des entsprechenden Felds in der Maske zurück. |
L |
InternalName |
Der interne Name des entsprechenden Felds in der Maske. |
L |
IsErrorField |
Gibt an, ob dieses Feld der Maske als fehlerhaft (gelb) auf der Indexdatenmaske markiert werden soll ('TRUE') oder nicht ('FALSE'). (siehe Beispiel 4) |
L/S |
Length |
Max. Länge des Felds |
L |
Name |
Name des Felds |
L |
Type |
Datentyp des Felds (s. u.) |
L |
Value |
Wert des Felds |
L/S |
Visible |
Auf FALSE gesetzt, wird das entsprechende Feld in der Maske ausgeblendet. |
L/S |
TextColor |
Schriftfarbe, Beispiel: RGB(33,255,59) |
L/S |
Mögliche Datentypen sind:
Typ |
Beschreibung |
Datenbank |
---|---|---|
# |
Realzahlen |
DECIMAL |
0 |
Kontrollkästchen |
SHORT |
1 |
Optionsschaltfläche |
SHORT |
9 |
Zahlen |
INTEGER |
A |
alle Zeichen ohne Ziffern |
CHAR |
C |
Pagecontrol |
CHAR |
D |
Datum |
DATE |
G |
Großbuchstaben |
CHAR |
I |
Volltextindex |
INTEGER |
L |
alle Zeichen |
CHAR |
M |
alle Zeichen |
CHAR |
P |
Patientenart |
CHAR |
Q |
ja/nein |
CHAR |
S |
männlich/weiblich/divers |
CHAR |
T |
links/rechts |
CHAR |
W |
Tabellenelement |
CHAR |
X |
alle Zeichen |
CHAR |
Z |
nur Ziffern |
CHAR |
Für Feldbezeichnungen sollten Sie die internen Namen verwenden, insbesondere bei Objektdefinitionen mit mehreren Sprachen. Interne Namen werden in Prozentzeichen geklammert angegeben.
ActivePage.ASFields.Item("%internalname%").Value = 'newValue'
ResultCode = 1
WriteToFile()
Anwendungsbeispiele in VBScript
Werden die oben beschriebenen Objekte in enaio® client durch einen Event oder vom VBScript-AddOn verwendet, brauchen Sie das ASFile-Objekt und das CoxHelp-Objekt nicht explizit erstellen. Auch die Eigenschaft 'Filename' des ASFile-Objekts wird automatisch gesetzt.
Beispiel 1
Ausgabe der Namen aller Datenblätter:
for b = 0 to RequestPages.Count-1
MsgBox(RequestPages.Item(b).Name)
Next
Beispiel 2
Ausgabe aller Feldnamen des gerade aktiven Datenblattes, sowie Änderung eines Feldinhaltes für einen Event:
for b = 0 to ActivePage.ASFields.Count-1
MsgBox(ActivePage.ASFields.Item(b).Name)
Next
ActivePage.ASFields.Item(1).Value = 'neuer Wert'
ResultCode = 1
WriteToFile()
Beispiel 3
Ausgabe des Namens des AddOn-Felds, sowie dessen Inhalt im Datenblatt und anschließende Änderung des Inhalts des AddOn-Felds:
MsgBox (AddonFields.Item(0).Name + ' = ' + AddonFields.Item(0).Value)
AddonFields.Item(0).Value = 'neuer Wert'
WriteToFile()
Beispiel 4
Farbliches Markieren eines Datenblatt-Felds auf einem Pagecontrol mit Aktivierung der entsprechenden Seite und Ausgabe einer Fehlermeldung als Tooltip für das Event 'OnClickItem' oder 'BeforeValidate':
ActivePage.ASFields("PageCtrl").CtrlPages(2).Fields.Item(2).IsErrorField = true
ErrorMessage = "Fehlerhafte Eingabe, bitte korrigieren."
ResultCode = -1
WriteToFile()
Beispiel 5
Unterscheiden, ob eine Abfrage im Expertenmodus durchgeführt wurde oder nicht durch Auslesen des Schlüssels #OSEXP# der Übergabedatei:
oxhelp.GetProfString "PAGE00","#OSEXP#",-1,rvalue,osfile
if ( rvalue = "1") then
‘Code für Expertenmodus
else
‘Code für nicht-Expertenmodus
end if