Der Makro-Manager ist ein sehr flexibles Werkzeug, um wiederkehrende Datenbankabfragen oder Befehlsfolgen zu speichern und auf Knopfdruck auszuführen. Erfahrene Anwender können komplexe eigene Funktionen gestalten und im GeoAS Netzwerk nach dem Motto: "Ich brauche da noch einen Knopf ..." zur Verfügung stellen.
Der Makro-Manager kann auch als eine Erweiterung des MapBasic-Fensters und des SQL-Auswahl-Fensters verstanden werden.
Dieser Manager erstellt ausführbare Funktionen, die in Menüs eingebettet oder in Werkzeugleisten auf eine Schaltfläche gelegt werden können.
Die Zuordnung erfolgt über die Zuweisung eines existierenden Menünamens und/oder eines Werkzeugleistennames mit einem Icon.
 | (vergrößern) |
|
Neu
|
Legt eine neue Manager-Funktion an.
Der Name kann direkt in der Tabelle eingetragen und/oder geändert werden.
|
Löschen
|
Der ausgewählte Eintrag wird gelöscht.
|
Kopieren
|
Der ausgewählte Eintrag wird mit seinen kompletten Einstellungen kopiert und unter einem neuen Namen gespeichert.
|
Name
|
Name der Funktion
|
Gruppe
|
Bindung der Funktion an eine Datengruppe.
Allen berechtigten Benutzern, die diese Gruppe geladen haben, erhalten die Funktion.
|
Menü
|
Bindung der Funktion in ein Menü.
Das Menü muss bereits existieren. Es werden keine neuen Menüs angelegt. Erfolgt keine Zuweisung, wird die Funktion unter dem entsprechenden Manager gelistet.
|
Werkzeugleiste
|
Bindung der Funktion an eine Schaltfläche in einer Werkzeugleiste.
Die Werkzeugleiste muss bereits existieren. Es wird keine neue Werkzeugleiste angelegt.
|
Werkzeugicon
|
Aus mehreren Bibliotheken kann ein Icon für die Schaltfläche ausgewählt werden.
 | (vergrößern) |
|
 | (vergrößern) |
|
 | (vergrößern) |
|
|
Zugriffsrecht
Prinzipiell gilt, dass der Ersteller einer Managerfunktion standardmäßig das exklusive Zugriffsrecht auf seine erstellte Funktion hat. Keinem anderen Benutzer steht die Funktion zur Verfügung.
Der Administrator kann über das GeoAS Management jedoch die Exklusivität erweitern und die Funktion weiteren Benutzern bzw. Benutzergruppen zuordnen. Er kann aber auch die Exklusivität generell aufheben, indem er alle zugeordneten Benutzer entfernt. Somit hat jeder Benutzer die Zugriffsmöglichkeit auf die entsprechende Funktion.
 | (vergrößern) |
|
 | (vergrößern) |
|
|
Öffnen Sie den Makro-Manager. Klicken Sie auf Neu und füllen Sie den neuen Datensatz aus. In das Textfeld können Sie den Makrotext direkt eingeben oder aus einer Textdatei einlesen.
Über ein Makro kann auch direkt ein Zusatzprogramm (*.mbx, *.wor) gestartet werden. Dazu wird die Programmdatei genauso wie eine Makro-Textdatei eingetragen.
Um ein Makro auszuführen, wählen Sie über das Menü bzw. die Werkzeugleiste die gewünschte Funktion aus.
|
 | (vergrößern) |
|
Syntax
Der MakroEditor ist mit einer erweiterten Syntax für Feldfunktionen versehen.
• | Feldfunktionen sind als Platzhalter zu verstehen und werden mit dem Zeichen # vor und hinter der Feldfunktion vom übrigen Makrotext abgesetzt. |
• | Sämtliche Feldfunktionen eines Makros werden nach Aufruf des Makros in einem Dialog zur Dateneingabe bereitgestellt. |
• | Die erweiterte Makrosyntax umfasst neben den Feldfunktionen für die Dialogabfrage auch Schlüsselwörter, die bestimmte Ereignisse auslösen. |
• | Pro Makro können maximal 10 Feldfunktionen benutzt werden. |
• | Es müssen keine Feldfunktionen benutzt werden. |
#Tabelle#
|
Dialog mit Editfeld und Beschriftung 'Tabelle'
|
#Tabelle:Baum#
|
wie oben, aber mit einem voreingetragenen Wert 'Baum' im Editfeld
|
#selection#
|
Schlüsselwort! Vor Makroausführung wird gecheckt, ob eine selection da ist
|
#Baum:selection#
|
Schlüsselwort! Vor Makroausführung wird gecheckt ob eine selection aus der Tabelle 'Baum' da ist
|
#Tabelle:Baum;Grün;Test#
|
Dialog mit einem PopUp-Menü (anstatt Editfeld)
|
#Tabelle1:(Tabelle2.Spalte)#
|
Dialog mit einem PopUp-Menü (anstatt Editfeld). Die Feldliste wird aus Tabelle2.Spalte bestimmt. Tabelle1 und Tabelle2 können auch identisch sein.
|
#Datum:curdate()#
|
Dialog mit Eingabefeld und voreingetragenem Systemdatum
|
#Zeit:time(12)#
|
Dialog mit Eingabefeld und voreingetragener Systemzeit (12 Std)
|
#Zeit:time(24)#
|
Dialog mit Eingabefeld und voreingetragener Systemzeit (24 Std)
|
Legende: vorgegebene Syntax Schlüsselwort Platzhalter frei definierbar
|
end public
|
End-Marke des vorgeschalteten Makro-Blocks.
Das Makro wird in zwei einzeln und nacheinander ausgeführte Teile gesplittet, und zwei separate 'run command' ausgeführt. Der vor end public stehende Teil darf keine Feldfunktionen (#) erhalten. So kann man vorab Bedingungen schaffen, die für den Rest des Makros erforderlich sind, z. B. für die Feldfunktionen im Dialog. Ohne end public wird das Makro mit einem einzigen 'run command' ausgeführt.
|
SelectionCheck(Tabelle)
|
prüft, ob eine Selektion auf Basis der angegebenen Relation existiert, gibt eine Meldung aus, wenn dem nicht so ist und bricht die Aufrührung des Makros ab.
Beispiel: SelectionCheck(Baum)
|
Closetable(Tabelle)
|
schließt die angegebene Relation. Beispiel CloseTable(Baum)
|
Autokartei
|
ruft die Standard-Karteikartenfunkton von GeoAS auf
(wie rechte Maustaste)
|
ZoomSelection
|
entspricht Auswahl-zentrieren (zoomt auf Objektgröße)
|
ShowSelection
|
entspricht Auswahl-suchen (behält den Zoombereich)
|
PathTemp
|
Variable, liefert den Temporärpfad zurück
|
TextWidth
|
legt die Breiten der StaticControls auf dem Auto-Dialog fest.
Beispiel: TextWidth=30, Default ist 75
|
EditWidth
|
legt die Breiten derEditControls auf dem Auto-Dialog fest.
Beispiel: EditWidth=100, Default ist 100
|
Description
|
bringt VOR Ausführung des Makros einen Beschreibungstext mit der Möglichkeit zu Canceln.
Beispiel-Makro:
description(Wollen Sie wirklich die Festplatte neu formatieren?)
HelpFile(GeoAS6_Hilfe.pdf)
end public
str1="#Ihr Name lautet#"
note str1+"! Sie haben soeben die Platte neu formatiert!"
|
Helpfile
|
Auf dem Description-Dialog UND auf dem Feldfunktionen-Dialog erscheint eine "?"-Schaltfläche, der die Hilfedatei öffnet. Die Hilfedatei kann ohne Pfadangabe im GeoAS-Dir oder im Help-Dir liegen. Absolutpfadangabe auch möglich. Beide Schalter sind nur im Public-Bereich erlaubt!
|
RunGeoASMenu(ID)
|
Führt eine GeoAS Funktion aus, die eine Menü-ID hat.
Beispiel: RunGeoASMenu(20011), startet die Formularvorlage.
Menu-ID
|
GeoAS Funktion
|
20058
|
Alle Relationen speichern
|
21022
|
Als Formular speichern
|
202
|
Ausschneiden
|
10812
|
Ausschnittsbereich festlegen
|
22018
|
Auswahl editierbar schalten
|
814
|
Benutzerdef. Beschrift. löschen
|
112
|
Drucken
|
204
|
Einfügen
|
10420
|
Excel Export....
|
610
|
Fenster neuzeichnen
|
609
|
Fenster speichern unter...
|
20011
|
Formularvorlage
|
21029
|
Formularvorlage bearbeiten
|
22007
|
Gesamtansicht
|
20010
|
Karte plotten
|
22013
|
Kartenfenster öffnen
|
22012
|
Kartenfenster speichern
|
22015
|
Kopie speichern und öffnen
|
106
|
Kopie speichern unter...
|
203
|
Kopieren
|
809
|
Kosmet. Objekte speichern
|
810
|
Kosmet. Layer löschen
|
205
|
Löschen
|
304
|
Markierung aufheben
|
702
|
Neue Zeile
|
206
|
Nur Kartenobjekte löschen
|
21028
|
Plot schließen
|
21021
|
Plot-Voreinstellungen
|
103
|
Relation schließen
|
105
|
Relation speichern
|
309
|
Statistik berechnen...
|
20071
|
Temp. Relationen schließen
|
1607
|
Umwandlung in Bereiche
|
1604
|
Umwandlung in Polylinien
|
119
|
W&FS öffnen…
|
118
|
W&MS öffnen…
|
1605
|
Zusammenfassen...
|
21100
|
Text-Label Menü für selektierte Objekte. Das zu beschriftende Fenster muss aktivs ein.
|
21101
|
Text-Label Menü für alle Objekte. Das zu beschriftende Fenster muss aktivs ein.
|
|
BrowseDialog(Tabelle)
|
Öffnet den GeoAS Tabellendialog. Der Aufruf muss am Ende des Makros stehen und darf nur einmal vorkommen.
 | (vergrößern) |
|
Variable
|
Datentyp
|
Str1 – Str9
|
String
|
Int1 – Int9
|
Integer
|
Dec1 – Dec9
|
Float
|
Dat1 – Dat9
|
Date
|
Log1 – log9
|
Logical
|
Ali1 – Ali9
|
Alias
|
Obj1 – Obj9
|
Object
|
|
Im Makro stehen eine Anzahl bereits vordefinierter Variablen zur Verfügung. Diese Variablen können direkt genutzt werden und müssen nicht per dim- /undim-Anweisung verwaltet werden. Pro Datentyp sind 9 Variablen definiert.
|
Legende: Schlüsselwort Platzhalter
|
In einen Makro-Code können beliebige Kommentare in eckigen Klammern […] eingefügt werden, die sich nicht auf den Makrolauf auswirken.
Nach jeder öffnenden Klammer "[" wird die nächstfolgende schließende Klammer "]" gesucht. Wenn eine schließende Klammer fehlt, wird am Makroende eine temporäre schließende Klammer gesetzt und der gesamte Text bis zum Makroende als Kommentar interpretiert.
|
Beipiel:
[Makro zur Ermittlung der Hoehendifferenz]
Int1=100
Select * from MeineTabelle where H=#Hoehe# [Hoehe ist Integer]
Int2=selection.H-int1 [Das ist das Endergebnis]
Note int2
|
Beispiel 1
Es soll ein beliebiges Anzeigefenster geöffnet werden (vergleichbar mit <Fenster><Neues Anzeigefenster>):
browse * from #Tabelle#
|


|
Beispiel 2
Es soll ein bestimmtes Anzeigefenster geöffnet werden
Browse * from #Tabelle:Baum#
Im Textfeld ist die vordefinierte Relation bereits eingetragen
|


|
Beispiel 3
Eine Selektion soll mit bestimmten Werten aktualisiert werden
update #Bäume:selection# set Prüfer="#Prüfung durch:Fritz Müller;Peter Meier#",
Prüfdatum="#Prüfdatum:CurDate()#",Uhrzeit="#Zeit:time(24)#",Bemerkung="#Bemerkung#"
(Vor Ausführung wird geprüft, ob tatsächlich Bäume selektiert sind.)
|


|
Beispiel 4
Eine Datenbankabfrage soll flexibel sein
select Baumnummer,Baumart,Strasse from Bäume where Vitalität="#Vitalität:gesund;geschädigt;abgängig#" and Prüfdatum<"#Prüfung vor dem#" into Vitalitätsliste noselect
browse * from Vitalitätsliste
|


|
Beispiel 5
In manchen Fällen müssen die Felder der Makro-Steuerelemente mit Werten gefüllt werden, die beim Öffnen des Makro-Eingabedialogs noch nicht bekannt sind. Daher kann man im Makros einen Teil abgrenzen, der vorab ausgeführt wird. Das Schlüsselwort 'end public' schließt diesen Teil ab.
Mit der Verwendung der vordefinierten Variablen lassen sich Werte zwischenpuffern und im weiteren Makroverlauf wieder anwenden.
|

|
|