Aufbau des Objekts für eine cXtension:
Das cXtension-Skript besteht üblicherweise nur aus einem Objekt, ggf. mit einem Vorspann zum Verhindern eines eigenständigen Starts. Der Name des Objekts ist gleichzeitig der Name des neuen Befehls in der click.EXE-Befehlsliste (sofern ein neuer Befehl gewünscht ist) bzw. des Platzhalterbereichs.
Damit das Objekt als PlugIn arbeiten kann, muss es einen festgelegten Grundaufbau haben, also bestimmte Eigenschaften aufweisen, deren Namen mit einem Ausrufungszeichen beginnen.
Die Info-Eigenschaft der Marke ::Objekt(Name)_Start wird als Beschreibung der cXtension verwendet.
Über folgende Eigenschaften (jeweils nur Lesen) kann bzw. muss ein cXtension-Objekt verfügen (die Beispielcodes zeigen den Code einer cXtension namens Muster):
!Registriert | (optional) cXtension ist registriert (lizensiert und daher im Editor uneingeschränkt nutzbar) oder nicht |
!Variablen | (optional) Liste der bereitgestellten Variablen (Eigenschaften ohne auszuführenden Code) |
!Ereignisse | (optional) Liste der verfügbaren Ereignisse (müssen im cXtension-Skript per Aufruf als "Ereignis" aufgerufen werden) |
!Darstellung | Definition der Darstellung der cXtension-Befehle im Skript (Skriptzeile im Listing) |
!Designerbild | (optional) Symbol, das die cXtension im Dialog-Designer repräsentieren soll. Diese Eigenschaft ist erforderlich, wenn dies eine Anzeigeelemente-cXtension ist |
!Menüeintrag | Hierdurch kann ein eigener Menüeintrag im cX-Editor angezeigt werden. |
!Ausführen | der eigentliche Code, der bei der Ausführung des cXtension-Befehls ausgeführt werden soll |
!Start | (optional) Das Skript wurde gestartet - Platz für Initialisierungen |
!Stopp | (optional) Das Skript wurde beendet - stoppt die Ausführung in der cXtension |
!FesteEigenschaften | (optional) Hier können mehrere Eigenschaften als Liste im Zurück-Befehl unter "Rückgabe" angegeben werden (z.B. !Beschreibung=xyz) |
::Objektname_Start | Initialisierung des Objekts, die beim Laden der cXtension aufgerufen wird. Hier können allgemeine Vorbereitungen ausgeführt werden |
::Objektname_Stopp | Aufräumfunktion, die beim Beenden der cXtension (Skriptende) aufgerufen wird |
Optional kann bei selbst angelegten Eigenschaften noch der Typ der Eigenschaft angegeben werden, damit in der Eigenschaftenliste auch z.B. ein Schalter oder eine Dateiauswahl erscheint. Der Typ wird zu Beginn der Beschreibung als X: angegeben, wobei für X stehen kann:
M:=Multiline-Eigenschaft, C:=Schalter, F:=Datei, V:=Variable, O:=Farbe, G:=Bild. J:=Sprungmarke, -:=nicht als Eigenschaft aufführen (nur über Platzhalter zu verwenden).
Ist in der Beschreibung zudem noch die Kategorie in # eingeschlossen enthalten, wird die Eigenschaft in der Eigenschaftenliste unter dieser Kategorie angezeigt.
Beispiel: "F:#Darstellung#Anzuzeigende Farbe" erzeugt eine Farbeigenschaft in der Kategorie "Darstellung" mit der Beschreibung "Anzuzeigende Farbe".
Die weiteren Eigenschaften des Befehls werden als normale Objekt-Eigenschaften eingerichtet:
Ist diese Eigenschaft implementiert, kann durch Rückgabe von 0 die cXtension als unregistriert bzw. bei 1 als registriert definiert werden. Dies wirkt sich ebenso aus wie bei den anderen PlugIns in click.EXE.
:: Muster_!Registriert_Lesen *** Beispiel-cXtension ist registriert Zurück (Ergebnis: '1') |
Liefert die Variablen, die zur Steuerung der cXtension benötigt werden.Diese Variablen werden im folgenden Format angegeben:
Variable=Beschreibung (z.B. Test=liefert eine Zahl). Mehrere Variablen können auch als mehrzeilige Liste angegeben werden.Die so erstellten Variablen tauchen dann in der Variablenauswahl unter der Kategorie "cXtensions-Eigenschaften" auf und können dann wie gewohnt benutzt werden.
:: Muster_!Variablen_Lesen *** Variablen der Beispiel-cXtension Zurück (Ergebnis: 'Test=liefert eine Zahl') |
Liefert die Ereignisse der cXtension. Diese werden ebenfalls im Format "Text=Beschreibung" angegeben. In diesem Fall entspricht Text dem Namen des Ereignisses. Diese definierten Ereignisse werden dann auch im Marken-Dialog angeboten.(z.B. ::Muster_Test)
:: Muster_!Ereignisse_Lesen *** Ereignisse der Beispiel-cXtension Zurück (Ergebnis: 'Muster_Klick=Ereignis bei Klick'') |
Hier wird definiert, wie der neue Befehl der cXtension im Skriptlisting mit seinen Eigenschaften aussehen soll.
Hinweise:
• | Die Platzhalter, die mit "Befehlsparameter." beginnen, sind von click.EXE vorgegeben und erleichtern die Verwaltung der Parameter für den Befehl. Bei cXtensionen, die ein Element im Fenster darstellen sollen, sind dabei einige Variablen einzubauen, damit dies auch mit dem Dialog-Designer zusammenarbeiten kann. |
• | Beginnt der zurückgelieferte Text mit ==, wo wird der Rest als Befehlsanzeige verwendet, ohne dass das Schlüsselwort davor gesetzt wird. |
:: Muster_!Darstellung_Lesen *** Darstellung der Beispiel-cXtension Zurück (Ergebnis: 'X=[cX.cXtension.Befehlsparameter(X)], Y=[cX.cXtension.Befehlsparameter(Y)], Farbe=[Farbe]') |
In diesem Ereignis wird ein Dialog dargestellt, in dem ein hinzugefügter Befehl bearbeitet werden kann. Ein solcher Dialog ist nicht erforderlich, da alle Eigenschafts-Variablen in der Eigenschaftenliste angezeigt werden.
Dieser Dialog muss modal angezeigt werden, damit das Ergebnis erst zurückgeliefert wird, wenn die Bearbeitung abgeschlossen ist. Als Ein- und Ausgabeparameter wird hierbei üblicherweise [cX.cXtension.Befehlsparameter(X)] verwendet.
:: Muster_!Dialog_Lesen *** Bearbeitung der Beispiel-cXtension Aufbau und Verwaltung des (modalen) Dialogs Zurück |
!Designerbild (optional - nur für Anzeigeelemente-cXtensions)
Mit !Designerbild wird angegeben, welches Symbol die cXtension im Dialog-Designer haben soll (Bilddateiname oder Bildquelle).
Nur wenn dieses angegeben wurde, erkennt click.EXE die cXtension als designbaren Befehl an, der ein (kombiniertes) Element im Anzeigefenster darstellen kann.
:: Muster_!Designerbild_Lesen *** Designerbild der Beispiel-cXtension Zurück (Ergebnis: '%ICON%') |
Mit !Menüeintrag wird angegeben, dass im Extras-Menü des cX-Editors ein zusätzlicher Menüeintrag eingefügt werden soll. Als Text wird der Name der cXtension dargestellt, als Menübild das Designerbild (falls vorhanden).
Wird der Menüeintrag angeklickt, wird die Eigenschaft ausgelesen. Hier kann etwa ein Hilfsdialog angezeigt werden. Hinweis: An dieser Stelle kann nicht auf Eigenschaften eines verwendeten cXtension-Befehls zugegriffen werden.
:: Muster_!Menüeintrag_Lesen *** Menüeintrag der cXtension wurde angeklickt Meldung 'Dies ist die Beispiel-cXtension', Titel 'cXtension-Menüeintrag', Buttons 'Nur OK', Symbol 'Information' Zurück |
Unter !Ausführung kommt der Code, der beim Ausführen des Befehls abgearbeitet werden soll. Die Befehlsparameter enthalten die jeweiligen Parameter des Befehls.
:: Muster_!Ausführen_Lesen *** Ausführung der Beispiel-cXtension Hier kommt der Code hin, der ausgeführt werden soll ! Zurück |
Bei Anzeigeelemente-cXtensions wird hier das Steuerelement zusammengesetzt, indem normale click.EXE-Befehle für einen Dialog angegeben werden (ohne den Anzeigefenster-Befehl).
Die Elemente werden innerhalb einer intern erzeugten Zeichenfläche (siehe Bild-Element) angeordnet, deren Eigenschaften wie Größe oder Farben im cXt-Befehl selbst angegeben werden. Zur Laufzeit kann dadurch auch mit [.Zeichenfläche(cXt-ID).Eigenschaft] oder [.Element(cXt-ID).Eigenschaft] zugegriffen werden.
Für die Initialisierung der cXtension können eine Initialisierungs- und eine Aufräumroutine verwendet werden, die beim Starten bzw. Beenden des Hauptskripts aufgerufen werden. Hier ein kleines Beispiel dazu :
:: Muster_!Start_Lesen *** Initialisierungs-Routine für die cXtension Hier kommt nun der Initialisierungscode hin, z.B. die Definition von Vorgabewerten Zurück
:: Muster_!Stopp_Lesen *** Aufräum-Routine für die cXtension Hier kommt ein Aufräumskript hin Zurück |
Weiterhin gehört optional zum Aufbau einer cXtension eine Initialisierungs- und eine Aufräumroutine für das Objekt, die beim Laden der cXtension bzw. beim Beenden der EXE aufgerufen werden. Im Info-Feld von ::Objekt(<Name>)_Start kann zudem die Beschreibung der cXtension eingetragen werden.
Hier ein kleines Beispiel dazu :
:: Objekt(Muster)_Start, Info: Muster-cXtension
:: Muster_Start *** Initialisierungs-Routine für das Objekt Hier kommt nun der grundlegende Initialisierungscode hin Zurück
:: Muster_Stopp *** Aufräum-Routine für das Objekt Hier kommt ein finales Aufräumskript hin Zurück
:: Objekt(Muster)_Ende |
cX-Webseite: http://www.clickexe.net