Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Einleitung
Scripterstellung
Dialogeditor
Script-Befehle
Verschiedene Vorgangsweisen
Komplexes Beispiel
Quellen
Eigner Franz Spezialgebiet: Scripts in Lotus 23.04.2002
Einleitung:
LotusScript ist eine strukturierte Programmiersprache mit der man Aufgaben in 1-2-3 automatisieren kann. Scripts
sind kurze, objekt-orientierte Programme, die in der Kalkulations-Umgebung von Lotus 1-2-3 laufen. Sie sind erst
ab der 97er Version in Lotus 1-2-3 verfügbar.
Da LotusScript dieselbe Entwicklungsumgebung wie andere SmartSuite Anwendungen und Lotus Notes verwendet,
kann man Scripts in 1-2-3 und produktübergreifend in anderen Anwendungen wie Freelance Graphics, Word Pro
und Lotus Notes erstellen, austesten und ausführen. Weiters ist Lotus Script mit Visual Basic kompatibel, und
daher auch relativ einfach zu erlernen.
Scripterstellung:
• Scripterstellung durch Aufzeichnen Abb. 1
Wie bei einem Makro wird hier jeder Tastendruck und jede Aktion mitgeschrieben. (Auf diese Art und Weise
erhält man auch Aufschluß darüber, wie die einzelnen Programmierbefehle lauten, wenn man sich nicht der
Mühe unterziehen will, die Hilfe zu durchsuchen). Nach dem Start muß man einen Namen für das Script
eingeben und das Verzeichnis, in dem das Script gespeichert werden soll. Weiters werden 2 kleine Icons
eingeblendet (=> Abb.1), mit denen man die Aufzeichnung jederzeit pausieren und stoppen kann. Das Script
wird dann als globales Script unter dem angegebenen Namen abgelegt.
• Scripterstellung im Scripteditor
Mit dem Scripteditor (=> Abb.3) lassen sich Scripts direkt schreiben – vorausgesetzt man kennt die diversen
Programierbefehle.
Der Scripteditor („Bearbeiten/LotusScript Makros/ScriptEditor anzeigen“) gliedert sich in mehrere Bereiche.
Scripts können
a) an das Programm Lotus 123 selbst gebunden und auf bestimmte Aktionen hin gestartet werden
b) an ein bestimmtes Arbeitsblatt gebunden werden. Solche Scripts können dann mit Öffnen des Files
gestartet werden,
z.B.: Sub Opened(Source As Document)
Dialog1.show
End sub
c) an ein bestimmtes Arbeitsblatt als globale Scripts gebunden werden (z.B. Zins.123).
z.B.: Sub Eingabe
Dialog1.show
End Sub
Dialogerstellung
Ähnlich wie in Delphi kann in Lotus „visuell“ programmiert werden. Dabei steht als Grundobjekt eine
Dialogkomponente zur Verfügung in die dann weitere Komponenten eingebettet werden. Alle diese Komponenten
haben diverse Eigenschaften und es können für sie Scripts erstellt werden, die diese Komponenten ausführen,
wenn sie auf ein bestimmtes Ereignis reagieren.
Seite 2
Eigner Franz Spezialgebiet: Scripts in Lotus 23.04.2002
Werkzeugleiste: (Toolbox)
Wichtige Methoden:
• SetFocus: Fenster wird aktiviert
Spezielle Dialogelemente
Dialog: Methoden show: öffnet den Dialog
Methode close: schließt den Dialog
Ereignis load: Ladet (öffnet) den Dialog
Label: Eigenschaft caption: Inhalt des Labels ist vom Typ string
Textbox: Eigenschaft text: Inhalt der Textbox, ist vom Typ string
OptionButton/ Eigenschaft value: gibt an, ob Element ausgewählt ist oder nicht
Checkbox: 0 oder false: nicht ausgewählt
Listbox/ 1 oder true: ausgewählt
Combobox: 2 oder greyed: keine Auswahl möglich
Bei properties können im rechten Ordner die einzelnen Elemente eingegeben werden (zur
Entwurfszeit).
Eigenschaft list: enthält die einzelnen Elemente,
(dialog1.combo1.list(1) liefert das 2. Element)
Methode additem: fügt ein Element hinzu, Standardereignis: Pick!!
Slider: Eingeschaft value: liefert die Position des Schiebereglers als integer
Beispiel: Eingabedialog
Zuerst werden die Dialogkomponente (Dialog 1), die
Labelkomponenten (Label1-3), die Textboxkomponenten (Text1-3) und die Command-Button-Komponenten
(Command1-2) erstellt. (Properties (=>Abb. 4) werden über rechte Maustaste aufgerufen)
Seite 3
Eigner Franz Spezialgebiet: Scripts in Lotus 23.04.2002
Anschließend werden die entsprechenden Scripts geschrieben Der Script-Editor kann über die rechte Maustaste
(View Scripts), durch den Menüpunkt „View/Show Scripts“ oder durch Doppelklick auf eine Komponente gestartet
werden.
Das Script für den OK-Button könnte dann z.B. so wie in der
Abb. 6 aussehen.
Alle Inhalte, die an Zellen zugewiesen werden, sollten vorher
in einen String konvertiert werden (mit dem Befehl Cstr() ). Da
aber Caption ohnehin einen Text beinhaltet, kann diese
Konvertierung hier auch entfallen. Zellinhalte werden mit
[Zelle].Contents oder [Zellname].Contents angesprochen. Um
mit dem Button „Cancel“ den Dialog abzubrechen eignet sich
folgendes Script:
Editierfeld
Fehler im Script werden hier angezeigt
Verschiedene Schleifenformen
If ... then Bei einzeiliger Verzweigung kann das End if entfallen
...
else
...
End if
While [condition]
[statements]
W end
Do
[statements]
Loop[While | Until condition]
Datentypen in Lotus
Currency Währung
Data Datum, Zeit
Double, single reele Zahlen
Integer, long Integerzahlen (Slider
String Zeichenkette (Textfelder, Labelfelder, Zellen ( =>können aber auch integer sein!!), )
Variant alle einfache Datentypen, array, Objekte
Der Datentyp Variant stellt einen Container für beliebige Daten dar. Lotus legt den Typ bei Zuweisung anhand des
Wertes fest. Da Lotus keinen Datentyp für Datum oder Zeit aufweist, wird hier der Datentyp Variant verwendet.
Seite 5
Eigner Franz Spezialgebiet: Scripts in Lotus 23.04.2002
Parameterabfrage
z.B.: @WENN(E5>$B$9*2/3;$B$8;0)
[E5] ... momentanen Holzbestand
[B9] ... ursprünglicher Holzbestand [Ausgangsgröße]
[B8] ... Schlägerungsrate=1000
Wenn der momentane Holzbestand größer ist als 2/3 des ursprünglichen Holzbestandes, dann dürfen 1000
Einheiten abgeholzt werden. Ist dies nicht der Fall, darf keine Schlägerung erfolgen.
Diverse Vorgangsweisen
„Bereich löschen“: [
dialog1.text3.caption gibt hier an, ab welchem Wert die Zellen in der Tabelle gelöscht werden sollen.
Tabellenanfang bei D4. Bsp.: Bei Laufweite=30 wird der Bereich: [d34..h8192] gelöscht
Seite 6
Eigner Franz Spezialgebiet: Scripts in Lotus 23.04.2002
endzelladr="d"+Cstr(4+Cint(Dialog1.Text3.caption))
bereichsgrenze =endzelladr+"..h8192" {h8192 ist die letzte Zeile in der Spalte h}
Set bereich = Bind(bereichsgrenze)
bereich.Select
Selection.Clear Cleardata
@FOLGE(x;n) wandelt den Wert x in ein Label um, wobei n die Anzahl der Kommawerte angibt.
Bsp: [d5]=8, @FOLGE(D5;2) liefert das Label 8,00
Bsp.: @KOMPR(" 45 3/8") = 45 3/8, wobei die führende Leerstelle vor 45 und eine der beiden Leerstellen
zwischen 45 und 3/8 gelöscht wird.
@VVERWEIS(Argument;Spaltenbereich;Versatz) ermittelt den Inhalt der Zelle in einer bestimmten Spalte einer
vertikalen Verweistabelle. Ist Argument kleiner als der erste Wert in Spaltenbereich, so ergibt @VVERWEIS
FEHLER. Ist Argument größer als der letzte Wert in der ersten Spalte des Bereichs, so stoppt @VVERWEIS bei der
letzten Zelle in der Spalte, die mit Versatz angegeben wird, und gibt den Inhalt dieser Zelle als Antwort zurück.
Bsp.: Schulnoten:
[F5] .. Punkte bei Schularbeit; „Argument“
[a18]..[b22] Tabelle mit 2 Spalten: Punkte und Notentexte; „Spaltenbereich“, => Versatz=1
@VVERWEIS(F5;$A$18..$b$22;1)
Der jeweilige Notentext wird ausgegeben
Bsp.:
@VVERWEIS(C3;B:A3..B:G6;D4)
Hinweis: Hier wird auf Zellen (A3,G6) eines 2 Dokumentes (B) zugegriffen
Seite 7
Eigner Franz Spezialgebiet: Scripts in Lotus 23.04.2002
Quellen:
Hilfe im Script-Editor: Help, Lotus 1-2—3 Objects
Besonders aufschlußreiche Themen sind hier:
1-2-3 Classes 1-2-3 Events 1-2-3 Methods 1-2-3 Properties
Internet:
http://www.fh-wedel.de/cis/archiv/seminare/ss99/hs/Thema7/s4.htm
Seite 8