5,9 KiB
Flashcard Deck: $ Notation
Thema: Das Omnis $-Notationssystem Schwierigkeit: Anfaenger -> Fortgeschritten Karten: 30
Karte 1 | Basis
Q: Was bedeutet $cinst in Omnis?
A: Die aktuelle Instanz - aequivalent zu this in JavaScript oder self in Python. Zeigt auf das aktuelle Window/Objekt.
Karte 2 | Basis
Q: Wie liest du den Inhalt eines Feldes "customerName" auf dem aktuellen Window?
A: Calculate lVal as $cinst.$objs.customerName.$contents
Karte 3 | Basis
Q: Wie SETZT du den Inhalt eines Feldes? Warum geht = nicht?
A: Do $cinst.$objs.customerName.$contents.$assign("Meier") - Man muss $assign() verwenden, weil Notation-Pfade Objekte sind, keine einfachen Variablen.
Karte 4 | Basis
Q: Was ist der Unterschied zwischen $objs und $bobjs?
A: $objs = Objekte auf dem aktuellen Fenster/Form. $bobjs = "Background objects" / Objekte auf einer Superklasse (geerbte Objekte).
Karte 5 | Basis
Q: Was gibt $clib zurueck?
A: Die aktuelle Library (das Omnis-Projekt / .lbs Datei), in der der Code laeuft.
Karte 6 | Basis
Q: Wie greifst du auf eine andere Klasse in der gleichen Library zu?
A: Do $clib.$classes.ClassName.$open() Returns lRef
Karte 7 | Mittel
Q: Was bedeutet $ctask?
A: Der aktuelle Task - eine Art globaler Kontext/Session. Task-Variablen (tVar) leben hier.
Karte 8 | Mittel
Q: Wie machst du ein Feld unsichtbar?
A: Do $cinst.$objs.fieldName.$visible.$assign(kFalse)
Karte 9 | Mittel
Q: Wie rufst du eine Methode auf einem anderen Objekt auf?
A: Do iMyObject.$methodName(param1, param2) Returns lResult
Karte 10 | Mittel
Q: Was ist $cols bei einer Liste?
A: Die Spalten-Sammlung einer Liste. lList.$cols.$add('name', kCharacter, kSimplechar, 255) fuegt eine Spalte hinzu.
Karte 11 | Mittel
Q: Wie zaehlt man die Zeilen einer Liste?
A: Calculate lCount as lList.$linecount
Karte 12 | Mittel
Q: Was macht $line?
A: Gibt die aktuelle Zeilennummer einer Liste zurueck oder setzt sie. Do lList.$line.$assign(5) springt zu Zeile 5.
Karte 13 | Mittel
Q: Wie greifst du auf den Wert einer Spalte "price" in der aktuellen Zeile einer Liste zu?
A: Calculate lPrice as lList.price (wenn $line gesetzt ist) oder Calculate lPrice as lList.[lRow].price fuer eine bestimmte Zeile.
Karte 14 | Fortgeschritten
Q: Was ist $sendall()?
A: Fuehrt einen Befehl fuer ALLE Zeilen einer Liste aus - wie forEach in JS. Beispiel: Do lList.$sendall($ref.price.$assign($ref.price * 1.19)) (19% MwSt auf alle Preise)
Karte 15 | Fortgeschritten
Q: Was bedeutet $ref in $sendall?
A: $ref ist die Referenz auf die aktuelle Zeile innerhalb von $sendall - wie der Callback-Parameter in Array.forEach(item => ...).
Karte 16 | Fortgeschritten
Q: Wie findest du eine Zeile in einer Liste per Suche?
A: Do lList.$search(lList.id = lSearchID) - Setzt $line auf die gefundene Zeile. #F (Flag) zeigt Erfolg.
Karte 17 | Fortgeschritten
Q: Was ist $getAllCols()?
A: Laedt alle Spalten einer Datenbankabfrage in die Liste, ohne sie einzeln zu benennen.
Karte 18 | Basis
Q: Was macht kTrue vs kFalse?
A: Omnis-Konstanten fuer Boolean true/false. Immer mit k-Praefix (k = Konstante).
Karte 19 | Mittel
Q: Wie oeffnest du ein Window (Fenster)?
A: Do $clib.$windows.wMyWindow.$open('*') Returns lWinRef
Karte 20 | Mittel
Q: Was bedeutet der '*' Parameter bei $open?
A: Oeffnet das Fenster als neue Instanz. Ohne '*' wird eine bestehende Instanz wiederverwendet.
Karte 21 | Fortgeschritten
Q: Wie iterierst du ueber alle Objekte auf einem Window?
A: For each $cinst.$objs as lObj - wie for (const el of document.querySelectorAll('*')) in JS.
Karte 22 | Fortgeschritten
Q: Was ist der Unterschied zwischen $cclass und $cinst?
A: $cclass = die Klasse (Bauplan/Template), $cinst = die konkrete Instanz (laufendes Objekt). Wie MyClass vs myInstance in JS.
Karte 23 | Basis
Q: Wie gibt eine Methode einen Wert zurueck?
A: Quit method lReturnValue - aequivalent zu return lReturnValue in JS.
Karte 24 | Mittel
Q: Was ist $event?
A: Die Standard-Event-Handler-Methode einer Klasse. Wird bei UI-Events aufgerufen (wie onClick). Parameter pEventCode enthaelt den Event-Typ.
Karte 25 | Fortgeschritten
Q: Unterschied $event vs $eventclient bei Remote Forms?
A: $event = laeuft auf dem SERVER. $eventclient = laeuft im BROWSER (JavaScript). Fuer schnelle UI-Reaktionen $eventclient verwenden.
Karte 26 | Fortgeschritten
Q: Wie greifst du von einer Instanz auf die Instanz-Variable eines anderen offenen Windows zu?
A: Calculate lVal as $iwindows.wOtherWindow.$ivar.iMyVariable
Karte 27 | Mittel
Q: Was macht $add() bei einer Liste?
A: Fuegt eine neue leere Zeile am Ende hinzu. Do lList.$add(). Danach Werte setzen mit Calculate lList.colName as "wert".
Karte 28 | Mittel
Q: Wie loeschst du eine Zeile aus einer Liste?
A: Do lList.$remove(lList.$line) - entfernt die aktuelle Zeile. Oder Do lList.$remove(5) fuer Zeile 5.
Karte 29 | Fortgeschritten
Q: Was ist $define() bei einem Schema/Query?
A: Definiert die Spaltenstruktur. Do lSchema.$define(col1, col2, ...) - wie ein CREATE TABLE fuer eine Omnis-Datenstruktur.
Karte 30 | Fortgeschritten
Q: Wie navigierst du durch die gesamte Omnis-Objekthierarchie?
A: Von oben: $root -> $libs -> Library -> $classes -> Class -> $methods / $objs / $ivars. Alles ist ein Baum mit $ Pfaden!
Spaced Repetition Tracking
| Karte | Zuletzt | Naechste | Schwierigkeit |
|---|---|---|---|
| (wird beim Ueben gefuellt) |