4D v16.3Makros erstellen und einsetzen |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
Makros erstellen und einsetzen
|
Element Tags | Beschreibung |
<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 Makro | Kommentare |
<?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:
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:
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:
Produkt: 4D
Thema: Methoden bearbeiten
4D Designmodus ( 4D v16)
4D Designmodus ( 4D v16.1)
4D Designmodus ( 4D v16.3)