4D v16.3

Makros erstellen und einsetzen

Home

 
4D v16.3
Makros erstellen und einsetzen

Makros erstellen und einsetzen  


 

 

Sie können in Ihren Methoden Makro-Befehle verwenden. Über solche Befehle sparen Sie viel Zeit beim Schreiben einer Methode.

Ein Makro-Befehl ist der Teil eines 4D Codes, der ständig verfügbar und überall in Ihrer Methode einsetzbar ist – unabhängig von der Art der geöffneten Datenbank. Makros können alle Arten von 4D Text, Befehlen und Konstanten enthalten, ebenso wie spezielle Marker, die beim Einsetzen durch Werte ersetzt werden, die sich aus dem Makro Methodenkontext ergeben.
Ein Makro kann z.B. den Marker <method_name/>; enthalten; beim Einsetzen wird der Marker dann durch den Namen der aktuellen Projektmethode ersetzt. 

Makros werden als Text in einer oder mehreren (Text)dateien im XML Format gespeichert. Sie können in einer Liste des Methodeneditors liegen; sie lassen sich aber auch über das Kontextmenü oder die Funktion type-ahead aufrufen.

4D Makros werden im XML Format geschrieben. Sie können entweder die Standard-Makros von 4D verwenden oder diese an Ihre eigenen Bedürfnisse anpassen.

4D lädt Makros aus einem Ordner mit Namen “Macros v2.” Makros müssen die Form von einer oder mehreren XML Dateien haben, die in diesem Ordner liegen.

Der Ordner „Macros v2“ kann an folgende Stellen gesetzt werden:

  • Im aktiven 4D Ordner des Rechners. Diese Makros können alle Datenbanken gemeinsam nutzen.
    Hinweis: Die Position des aktiven 4D Ordners variiert je nach dem Betriebssystem. Weitere Informationen dazu finden Sie im Handbuch 4D Programmiersprache unter der Funktion Get 4D folder.
  • Neben der Strukturdatei der Datenbank: Diese Makros werden nur für diese Struktur geladen.
  • Für Komponenten im Ordner Components der Datenbank: Makros werden dann nur geladen, wenn die Komponente installiert ist.

Sie können diese drei Speicherorte auch gleichzeitig benutzen: Sie können an den drei Speicherorten einen Ordner “Macros v2” installieren. Makros werden dann in folgender Reihenfolge geladen: 4D Ordner, Strukturdatei, Komponente 1... Komponente X.

4D bietet eine Reihe Standard-Makros, sie entsprechen den Schlüsselwörtern in den früheren Versionen von 4D. Sie liegen in der Datei “Macros.xml” im Ordner „Macros v2“, der beim ersten Start von 4D im aktiven 4D Ordner des Rechners angelegt wird. Sie können diese Datei oder den Inhalt des Ordners später nach Belieben ändern. Bei Problemen können Sie den Ordner auch löschen. 4D erstellt ihn beim nächsten Starten wieder neu.

Sie können über einen standardmäßigen Texteditor oder per Programmierung eigene Makros in die Datei “Macros.xml” einfügen. Sie können auch XML Dateien von eigenen Makros in diesem Ordner ablegen.

Im lokalen Modus lässt sich die Makro Datei beim Einsatz von 4D öffnen. Die Liste der verfügbaren Makros wird bei jedem Ereignis aktualisiert, das 4D aktiviert. Sie können z.B. den Texteditor in den Vordergrund holen, die Makro Datei ändern, dann in die 4D Methode zurückkehren: Das neue Makro ist im Methodeneditor verfügbar.

Leere oder fehlerhafte Makros werden nicht angezeigt.

Die Dateien mit Makro-Befehlen müssen konform zum XML Standard sein. Das bedeutet insbesondere, dass am Anfang einer Makro-Datei Anweisungen mit der XML Deklaration <?xml version="1.0" ...?> und der Dokument Deklaration <þ!DOCTYPE macros SYSTEM "http://www.4d.com/dtd/2007/macros.dtd"> Die verschiedenen Arten von XML Codierung werden unterstützt. Es empfiehlt sich jedoch, eine Codierung zu verwenden, die kompatibel ist zu Mac/PC (UTF-8). 4D bietet eine DTD Datei, mit der sich die Makro-Dateien bestätigen lassen. Diese Datei finden Sie an folgender Stelle:

  • Windows: \Resources\DTD\macros.dtd
  • Mac OS: :Contents:Resources:DTD:macros.dtd

Enthält eine Makro-Datei nicht die Anweisungen zur Deklaration oder lässt sie sich nicht bestätigen, wird sie nicht geladen.

4D Makros werden mit individuell angepassten XML Tags, auch “Elemente” genannt, erstellt.

Bestimmte Marker definieren Anfang und Ende. Das sind doppelte Marker vom Typ <tag> </tag>), andere werden durch eingefügte Werte ersetzt (<tag/>).

In Anlehnung an XML Spezifikationen können Marker von Elementen auch Attribute enthalten. Sie sind optional, wenn nichts anderes angegeben ist. Es wird ein Standardwert angegeben. Die Syntax für Elemente mit Attributen lautet:

  • Double tags: <tag attribute="value"> </macro>
  • Single tags: <tag attribute="value"/>

Lässt ein Element mehrere Attribute zu, können Sie diese, getrennt durch Leerzeichen, in einer Befehlszeile gruppieren:
<tag attribute1="value" attribute2="value" attribute3="value"... >

Es folgt die Liste der Marker mit ihrer Verwendung:

Element TagsBeschreibung
<macros> </macros>Start und Ende der Makro Datei (zwingender Tag).
<macro> </macro>Start und Ende für Definition eines Makros und seiner Attribute.
Attribute:
- name: Name** des Makro, der in Menüs und Listen des Methodeneditors erscheint (zwingende Attribute).
- type_ahead_text: Einzugebende Zeichenkette**, um das Makro über die type-ahead Funktion* aufzurufen.
- in_menu: Boolean Wert, der angibt, ob das Makro über das Kontextmenü* aufrufbar ist. Werte = "true" (Standard) oder "false."
- type_ahead: Wert, der angibt, ob das Makro über die type-ahead Funktion* aufrufbar ist. Werte = "true" (Standard) oder "false."
- method_event: Damit lässt sich das automatische Aufrufen des Makro je nach Bearbeitungsphase der Methode auslösen (Erstellen, Schließen, etc). Werte = "on_load": Das Makro wird beim Öffnen jeder Methode ausgelöst, "on_save": Das Makro wird beim Sichern jeder Methode ausgelöst (Schließen einer geänderten Methode oder Sichern im Menü Datei/Ablage>Speichern), "on_create": Das Makro wird beim Erstellen jeder Methode ausgelöst, "on_close": Das Makro wird beim Schließen jeder Methode ausgelöst.
"on_save" und "on_close" können nebeneinander benutzt werden — mit anderen Worten, beide Ereignisse werden erzeugt, wenn eine geänderte Methode geschlossen wird. Dagegen werden "on_create" und "on_load" nie aufeinanderfolgend erzeugt. Mit diesem Attribut können Sie z.B. Methoden beim Erstellen vorformatieren (Kommentare im Kopfbereich) oder Information wie Datum und Uhrzeit beim Schließen speichern.
- version: Damit können Sie den neuen Modus zur Unterstützung von Textauswahlen für das Makro einstellen (siehe unteren Abschnitt “Tag <method>”). Um ihn zu aktivieren, übergeben Sie im Makro-Element das Attribut Version="2". Lassen Sie dieses Attribut weg oder übergeben Sie version="1", wird der vorige Modus beibehalten.
- in_toolbar: Boolean, der angibt, ob das Makro im Menü der Makro-Schaltfläche der Toolbar vorhanden sein muss. Werte: "true" (Standard) oder "false"
<selection/>Tag, das beim Einfügen des Makro in Text verwandelt wird. Die Auswahl kann leer sein.
<text> </text>Start und Ende von Code, der in die Methode eingefügt werden muss. Vor und nach dem Code wird eine Zeilenschaltung eingefügt.
<method> </method>Gibt Anfang und Ende des Namens der Projektmethode und ihre Parameter an (optional). Die Methode wird ausgeführt, wenn das Makro aufgerufen wird. Sie können es als Parameter in der Form ("param1;param2;...") übergeben. Dieser Parameter wird in der Methode über die Variablen $1, $2, empfangen. Weitere Informationen dazu finden Sie im unteren Abschnitt “Tag <method>”.
<caret/>Stelle des Einfügepunkts im Code nach Einfügen des Makro.
<user_4D/>Tag wird durch den Namen des aktuellen 4D Benutzers ersetzt.
<user_os/>Tag wird durch den Benutzernamen für das aktuelle Betriebssystem ersetzt.
<method_name/>Tag wird durch den Namen der aktuellen Projektmethode ersetzt.
<method_path/>Tag wird durch den kompletten Pfadnamen der aktuellen Projektmethode ersetzt.
<date/>Tag wird durch das aktuelle Datum ersetzt.
Attribute:
- format: 4D Format zur Datumsanzeige. Wurde kein Format definiert, erscheint das Standardformat. Nummer des 4D Formats (0 bis 8).
<time/>TTag wird durch die aktuelle Zeit ersetzt.
Attribute:
- format: 4D Format zur Zeitanzeige. Wurde kein Format definiert, erscheint das Standardformat. Werte = Nummer des 4D Formats (0 bis 6).
<clipboard/>Tag wird durch den Inhalt der Zwischenablage ersetzt.
Attribute:
- index: Einzufügende Zwischenablage. Werte = Nummer der Zwischenablage (0 bis 9).

* Makros lassen sich über das Kontextmenü des Methodeneditors oder die type-ahead Funktion aufrufen (siehe folgende Absätze).
** In Anlehnung an die Regeln der XML Sprache sollten Sie nicht den erweiterten Zeichensatz verwenden. Das sind Zeichen wie Akzente, Anführungszeichen, etc..

Beispiel:

Inhalt des MakroKommentare
<?xml version=“1.0“ ...?XML Deklaration
<!Doctype macros SYSTEM>Dokument Deklaration
<macros>Start der XML Datei des Makro
<macro name="RecordLoop">Start von Definition und Name des Makro
<text>Start des Makro Codes
For($i;1;Records in selection(<Selection/>))Der Marker <Selection/> wird beim Einsetzen des Makro durch den gewählten Code in der 4D Methode ersetzt, z.B. ein Tabellenname.
SAVE RECORD(<Selection/>)   
NEXT RECORD(<Selection/>)   
End for
</text>Ende des Makro Code
</macro>Ende der Makro Definition
</macros>Ende der Makro XML Datei

Das Tag <method> ermöglicht, Makro-Befehle zu erstellen und einzusetzen, die 4D Projektmethoden ausführen. Über Makro-Befehle, gekoppelt mit Komponenten, können Entwickler komplexe Funktionsabläufe erstellen. Das folgende Makro löst zum Beispiel die Ausführung der Methode MyMethod aus, wobei der Name der aktuellen Methode als Parameter dient:

<method>MyMethod("<method_name/>")</method>

Der Code einer aufgerufenen Methode wird in einem neuen Prozess ausgeführt. Dieser wird beendet, sobald die Methode ausgeführt ist.

Hinweis: Der Strukturprozess bleibt eingefroren, bis die Ausführung der aufgerufenen Methode abgeschlossen ist. Sie müssen sicherstellen, dass die Ausführung rasch ist und kein Risiko besteht, das Programm zu blockieren. Tritt dieser Fall ein, verwenden Sie die Tastenkombination Strg+F8 unter Windows, Befehlstaste+F8 auf Mac OS), um den Prozess zu „killen“.

Makros lassen sich über das Kontextmenü oder die Werkzeugleiste des Methodeneditors, über die Funktion type-ahead oder eine spezifische Liste im unteren Fensterteil des Methodeneditors aufrufen.
Sie können für jedes Makro einstellen, ob es über das Kontextmenü und/oder die Funktion type-ahead aufrufbar ist.

Alle Makros werden standardmäßig mit dem hierarchischen Befehl Makro einfügen über das Kontextmenü des Methodeneditors oder das Symbol für Makros in der Werkzeugleiste aufgerufen. 

Das Attribut in_menu des Tag <macro> bestimmt, ob das Makro im Menü erscheint oder nicht.

Im Kontextmenü erscheinen Makros in der Reihenfolge in der Datei “Macros.xml”. Sie können die Reihenfolge durch Ändern dieser Datei umstellen.

Alle Makros sind standardmäßig über die Funktion type-ahead verfügbar. Weitere Informationen dazu finden Sie im Abschnitt Methode schreiben. Über das Attribut type_ahead des Tag <macro> können Sie ein Makro von dieser Funktionsweise ausschließen. 

Hinweis: Ein Makro mit dem Tag <selection/> erscheint nicht im PopUp-Menü von type-ahead.

Sie können Ihre Makros in einer Liste des Methodeneditors anzeigen. Weitere Informationen dazu finden Sie im Abschnitt Methode schreiben. Sie rufen das Makro durch Doppelklick auf einen Eintrag in der Liste auf. Es ist nicht möglich, ein bestimmtes Makro aus der Liste auszuschließen.

Die Unterstützung von Makros kann sich von einer 4D Version zur nächsten ändern. Damit die verschiedenen Versionen kompatibel und Ihre eigenen Anpassungen erhalten bleiben, entfernt 4D keine früheren Versionen. Wollen Sie die neuesten verfügbaren Funktionalitäten nutzen, müssen Sie Ihre Version entsprechend anpassen.

In 4D Versionen vor v11 hat 4D automatisch eine Reihe von Prozessvariablen verwendet, um Text in Methoden mit dem Tag  <method>: Eingabevariablen (_textSel, _blobSel, _selLen, _textMethod, _blobMethod, _methodLen), um Text zu finden, Ausgabevariablen (_textReplace, _blobReplace, _action) um Text einzufügen. Diese Funktionsweise wird zur Wahrung der Kompatibilität in 4D v11 weiter unterstützt, sie ist jedoch aus folgenden Gründen jetzt überholt:

  • Die Verwendung von BLOB Variablen bei Text mit mehr als 32.000 Zeichen ist nicht mehr notwendig,
  • Die Verwaltung von Variablen ist nicht kompatibel mit der neuen Komponenten Architektur, denn hier ist der Ausführungsbereich von Variablen aufgeteilt. Eine Komponente in Version 11 kann nicht über vordefinierte Variablen auf Text von Methoden der Host Datenbank zugreifen und umgekehrt.

Von daher empfiehlt es sich, über die 4D Befehle GET MACRO PARAMETER und SET MACRO PARAMETER den neuen Modus zur Unterstützung von Textauswahlen zu verwenden. Damit können Sie die aufgeteilten Ausführungsbereiche der Host Datenbank bzw. Komponente übergehen und so Komponenten für die Verwaltung der Makros erstellen. Um diesen neuen Modus für ein Makro zu aktivieren, müssen Sie das Attribut Version im Makro-Element mit dem Wert 2 deklarieren. Dann verwaltet 4D nicht mehr die vordefinierten Variablen _textSel, _textReplace, etc. sondern verwendet die 4D Befehle GET MACRO PARAMETER und SET MACRO PARAMETER. Die Anweisung dazu lautet:

<macro name="MyMacro" version="2">
--- Text of the macro ---
</macro>

Übergeben Sie dieses Attribut nicht, wird der vorige Modus beibehalten.

Ab 4D v11 gelten für Makro-Dateien strikte Syntaxregeln, um den XML Standard zu berücksichtigen. Das kann zu Inkompatibilität mit dem Code in Makros aus früheren Versionen führen und das Laden von XML Dateien verhindern. Die Hauptursachen dafür sind:

  • Kommentare vom Typ “// my comment” die in bisherigen Makro-Formaten innerhalb von <macro> Elementen verwendet.Kommentarzeilen müssen standardmäßig die Form “<!-- my comment -->” haben.
  • Die Symbole <> insbesondere für Interprozess Objektnamen verwendet, müssen kodiert werden. Die Variable <>params muss jetzt &lt;>params lauten.
  • In früheren 4D Versionen konnte das Tag <macros> das den Start deklariert hat, wegbleiben. Jetzt ist es zwingend; denn sonst wird die Datei nicht geladen.

In 4D Version 12 gibt es neue Makro-Befehle, die den Einsatz der SQL Befehle erleichtern. Da die Datei "Macros.xml" individuell anpassbar ist, wird beim Installieren einer neuen Version von 4D die vorhandene Datei nicht automatisch ersetzt. Um die neuen SQL Makro-Befehle von 4D v12 zu nutzen, müssen Sie folgendes ausführen:

  • entweder die Datei "Macros.xml" im Ordner "Macros v2" löschen (wenn sie nie verändert wurde) und 4D starten. Die neue Datei wird automatisch angelegt.
  • oder die neuen Makros manuell in die Datei "Macros.xml" im Ordner "Macros v2" einfügen (wenn Sie den Inhalt verändert haben). Die neue Vorlagendatei der Macros liegt im Programm 4D unter 4D\Resources\en.lproj oder 4D\Resources\de.lproj.



Siehe auch 

Methode schreiben

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Methoden bearbeiten

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Designmodus ( 4D v16)
4D Designmodus ( 4D v16.1)
4D Designmodus ( 4D v16.3)