Das ActiveX-Control 'OXACTIVE'

enaio® editor-for-events 11.10 »

Ü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