193 Zeilen
5,9 KiB
Markdown
193 Zeilen
5,9 KiB
Markdown
# 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) | | | |
|