codeeditor — u_pbt_codeeditor #
← Komponentenreferenz · Inhalt des Handbuchs
Code-Editor mit Syntaxhervorhebung: zehn Sprachen, Zeilennummern, Falten von Regionen, Suchen und Ersetzen, Diagnosemarkierungen in der Leiste und Ablegen von Dateien.
▶ Live ansehen — Demoanwendung, Kachel Code editor: die Vorschau, der zugehörige Code und diese Seite, nebeneinander.
Auf einen Blick #
| Userobject | u_pbt_codeeditor |
| Item-Klasse | — (Komponente ohne Items) |
| Wofür | Code, eine SQL-Abfrage oder eine Konfigurationsdatei eingeben oder anzeigen: überall dort, wo ein multilineedit zu unleserlich ist |
| Opt-in-Optionen | ib_track_caret, ib_allow_drop, ib_folding |
Schnellstart #
// open-Event des Fensters
uo_editor.is_syntax = uo_editor.SYNTAX_SQL
uo_editor.is_text = "SELECT c.name, SUM(o.amount) AS total~r~n" &
+ "FROM customer c~r~n" &
+ "WHERE o.status = 'paid'"
// Local variables
string ls_sql
// Zuruecklesen, was der Benutzer tatsaechlich eingegeben hat
ls_sql = uo_editor.of_get_text()
is_textliefert dasselbe: Die Eingabe des Benutzers landet dort, sobald sie sich gesetzt hat (Eventue_changed).
Unterstützte Sprachen #
is_syntax akzeptiert eine dieser Konstanten oder SYNTAX_NONE (leere Zeichenkette) für reinen Text ohne Hervorhebung.
| Sprache | Konstante | Weitere akzeptierte Schreibweisen |
|---|---|---|
| PowerScript | SYNTAX_POWERSCRIPT | pb, powerbuilder |
| SQL | SYNTAX_SQL | tsql, plsql |
| JavaScript | SYNTAX_JAVASCRIPT | js, jsx |
| JSON | SYNTAX_JSON | jsonc |
| C-Familie | SYNTAX_C · SYNTAX_CPP · SYNTAX_CSHARP · SYNTAX_JAVA | c++, cxx, cs |
| HTML / XML | SYNTAX_HTML · SYNTAX_XML | htm, xhtml, svg |
| CSS | SYNTAX_CSS | scss, less |
| Python | SYNTAX_PYTHON | py |
| YAML | SYNTAX_YAML | yml |
| Markdown | SYNTAX_MARKDOWN | md, mkd |
Sprachen derselben Familie teilen sich die Hervorhebung (SYNTAX_JAVA färbt wie SYNTAX_C, SYNTAX_XML wie SYNTAX_HTML): Die Konstante, die Sie wählen, dokumentiert Ihre Absicht, das Ergebnis auf dem Bildschirm ist dasselbe. Der Wert unterscheidet nicht zwischen Groß- und Kleinschreibung, und ein unbekannter Name fällt ohne Fehler auf reinen Text zurück.
Eigenschaften #
Inhalt und Sprache #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
is_text | string | "" | Der im Editor angezeigte Code. Beim Zurücklesen liefert er den aktuellen Inhalt, die Eingabe des Benutzers eingeschlossen, mit den übergebenen Zeilenenden: ein CRLF-Text wird in CRLF zurückgelesen, ein reiner CR-Text in CR, gefaltet oder nicht; ein Text, der sie mischt, wird in CRLF zurückgelesen. Ein neuer Text wird ab seiner ersten Zeile angezeigt, entfernt die Markierungen von of_add_marker und gilt nicht als geändert (ib_modified) |
is_syntax | string | "" | Sprache der Hervorhebung: Konstanten SYNTAX_* (siehe Tabelle oben). SYNTAX_NONE = reiner Text. Wird so zurückgelesen, wie er geschrieben wurde: SYNTAX_CSHARP bleibt SYNTAX_CSHARP, auch wenn C# die C-Grammatik teilt |
ib_readonly | boolean | false | Schreibgeschützter Editor: Der Benutzer kann lesen, ohne ändern zu können |
ib_modified | boolean | false | true, sobald der Text von dem als gespeichert erklärten abweicht: ein neues is_text ist nicht geändert, Eingabe, of_insert_text oder ein Ersetzen machen ihn geändert, Rückgängigmachen bis zum gespeicherten Text setzt ihn wieder auf false. Setzen Sie ihn nach dem Speichern auf false zurück; true erzwingt ihn |
Anzeige #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
ib_line_numbers | boolean | true | Blendet die Zeilennummernleiste links ein oder aus; ausgeblendet behält eine schmale Leiste die Faltmarkierungen und die Diagnosen von of_add_marker |
ib_current_line | boolean | true | Hebt die Zeile hervor, in der die Einfügemarke steht; im Modus ib_wrap deckt das Band alle Reihen der Zeile ab |
ib_folding | boolean | false | Opt-in: erlaubt das Falten der Regionen #region … #endregion (//#region in PowerScript, JavaScript oder C) über die Leiste: #region beginnt gefaltet, #regionopen geöffnet; die Markierungen bleiben auch bei ib_line_numbers = false. Es ist ein Lesemodus: solange er aktiv ist, nimmt der Editor keine Eingabe an, denn das Eingabefeld enthält dann den gefalteten Text und nicht die Quelle; ihn über geschlossenen Regionen einzuschalten vergisst auch den Strg+Z-Verlauf. Eine Markierung ist per Tastatur erreichbar (Tab); Eingabe oder Leertaste faltet sie zu oder auf |
ib_wrap | boolean | false | Bricht lange Zeilen um, statt seitlich zu scrollen |
ii_tab_size | integer | 4 | Anzahl der Spalten, die ein Tabulator einnimmt, von 1 bis 12 (jeder andere Wert fällt auf 4 zurück); Eingabe nach einer öffnenden Klammer rückt um diese Breite ein |
is_font_family | string | "" | Schriftart des Editors (leer = Schriftart mit fester Zeichenbreite aus dem Design) |
ii_font_size | integer | 0 | Schriftgröße in Pixeln (0 = Größe aus dem Design) |
Navigation und Interaktionen #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
ib_search_enabled | boolean | true | Aktiviert die integrierte Suchleiste (Strg+F, Strg+H zum Ersetzen — siehe „Tastatur“); bei false liefert of_find -4 |
ib_find_match_case | boolean | false | Suchoption: findet nur Text mit derselben Groß-/Kleinschreibung. Die Schaltfläche Aa der Leiste ist derselbe Schalter; gilt für of_find, of_replace und of_replace_all |
ib_find_whole_word | boolean | false | Suchoption: findet den Text nur als ganzes Wort (der _ gehört zum Wort: ls_a wird in ls_ab nicht gefunden). Schaltfläche ab der Leiste |
ib_find_regex | boolean | false | Suchoption: der Text ist ein regulärer Ausdruck (JavaScript-Syntax); der Ersatz von of_replace kann dann $1, $& und $<name> verwenden. Ein ungültiger Ausdruck findet nichts, rahmt das Feld rot ein und lässt of_replace -5 liefern. Schaltfläche .* der Leiste |
il_doc_line | long | 0 | Bringt die angegebene Zeile in die Mitte der Ansicht und markiert sie mit einem Akzentband (Nummerierung ab 1, wie die Leiste) — die Zeile, auf die eine Dokumentation oder ein Suchergebnis zeigt. Einfügemarke und Auswahl des Benutzers bleiben unverändert (il_caret_line bewegt die Einfügemarke). Eine in einer gefalteten Region verborgene Zeile öffnet diese Region; das Band wird auch im Modus ib_wrap gezeichnet. 0 entfernt das Band; eine Zeile hinter dem Textende markiert nichts und wird so zurückgelesen, wie sie geschrieben wurde; jedes neue is_text entfernt das Band |
il_caret_line | long | 1 | Die Zeile der Einfügemarke, ab 1, live gelesen (gefaltet: die der Leiste). Das Schreiben setzt die Einfügemarke an den Anfang dieser Zeile und bringt sie auf den Bildschirm — das „Gehe zu Zeile“ eines Compilerfehlers; eine in einer gefalteten Region verborgene Zeile öffnet diese Region, eine Zeile hinter dem Ende bleibt bei der letzten. Mit ib_track_caret folgt ue_caret_changed, wie bei einem Klick — nichts, wenn die Einfügemarke bleibt, wo sie ist |
il_caret_column | long | 1 | Die Spalte der Einfügemarke, ab 1, live gelesen: der Rang des Zeichens in seiner Zeile (ein Tabulator zählt als eins). Das Schreiben bewegt die Einfügemarke entlang ihrer Zeile; hinter dem Zeilenende bleibt sie an diesem Ende. Mit ib_track_caret folgt ue_caret_changed, wie bei einem Klick |
ib_track_caret | boolean | false | Opt-in: löst bei jeder Bewegung der Einfügemarke ue_caret_changed aus — Geste des Benutzers oder Befehl Ihres Codes; ein neues Dokument (is_text, ein Laden) sagt nichts über die Einfügemarke |
ib_allow_drop | boolean | false | Opt-in: nimmt Dateien aus dem Windows-Explorer entgegen; die vollständigen Pfade kommen über ue_drop_files an |
is_theme_style | string | "" | Visueller Stil der Komponente (Konstanten THEME_STYLE_*); leer = der der Anwendung, bei jeder Änderung übernommen |
is_theme_mode | string | "" | Helle oder dunkle Variante (Konstanten THEME_MODE_*); leer = die der Anwendung, bei jeder Änderung übernommen |
il_theme_accent | long | -1 | Akzentfarbe dieser Komponente (-1 = Akzent der Anwendung, sonst der des Designs) |
is_tooltip | string | "" | Einfacher Tooltip beim Überfahren der Komponente |
is_super_tooltip_title | string | "" | Titel des erweiterten Tooltips (hat Vorrang vor is_tooltip) |
is_super_tooltip_text | string | "" | Text des erweiterten Tooltips (Rich-Markup zulässig) |
is_super_tooltip_image | string | "" | Bild des erweiterten Tooltips |
Methoden #
| Methode | Zweck |
|---|---|
of_get_text ( ) → string | Liefert den aktuellen Inhalt — denselben Wert wie is_text, für Code, der einen Methodenaufruf bevorzugt |
of_find (string as_text) | Öffnet die Suchleiste, trägt den Text ein und hebt alle Vorkommen hervor, gemäß den Optionen ib_find_* (gefaltet nur in den sichtbaren Zeilen). Das erste Vorkommen ab der Einfügemarke wird auf den Bildschirm geholt; die Einfügemarke selbst bewegt sich erst, wenn der Benutzer die Leiste schließt. Ein leerer Text leert das Feld und entfernt die Hervorhebungen. Liefert 0, sobald angewendet, -4, wenn ib_search_enabled false ist, -2, wenn die Komponente nicht erstellt ist |
of_insert_text (string as_text) | Fügt Text an der Einfügemarke ein, genau so, als hätte der Benutzer ihn getippt: die aktuelle Auswahl wird ersetzt, die Einfügemarke steht danach hinter der Einfügung, und diese wird auf den Bildschirm geholt. Das ist die Methode einer Schaltfläche Ausschnitt einfügen, wo is_text die laufende Arbeit verwerfen würde. Während einer Suche wird an der Einfügemarke des Benutzers eingefügt, nie über dem Treffer. Liegt der Fokus im Editor oder in seiner Suchleiste, läuft die Einfügung über den Bearbeitungsweg des Browsers: Strg+Z macht sie weiterhin rückgängig. Löst ue_changed aus, und mit ib_track_caret folgt ue_caret_changed, wie bei einer Eingabe. Nichts wird eingefügt, solange der Editor schreibgeschützt (ib_readonly) oder gefaltet (ib_folding) ist. Liefert 0, sobald angewendet, -4 bei Schreibschutz oder Faltung, -5 bei leerem Text, -2, wenn die Komponente nicht erstellt ist |
of_replace (string as_find, string as_replace) | Ersetzt das erste Vorkommen von as_find ab der Einfügemarke (danach wieder von oben) und holt es auf den Bildschirm; die Optionen ib_find_* gelten, und mit ib_find_regex kann der Ersatz $1, $& und $<name> verwenden. Ein Strg+Z macht es rückgängig. Mit ib_track_caret folgt ue_caret_changed, wenn sich die Einfügemarke bewegt. Liefert die Anzahl der ersetzten Vorkommen (1 oder 0, wenn es keines gibt), -4 bei Schreibschutz oder Faltung, -5 bei leerer Suche oder ungültigem Ausdruck, -2, wenn die Komponente nicht erstellt ist |
of_replace_all (string as_find, string as_replace) | Ersetzt alle Vorkommen von as_find in einem Rückgängig-Schritt. Dieselben Optionen und Codes wie of_replace; liefert die Anzahl der ersetzten Vorkommen |
of_selected_text ( ) → string | Liefert den vom Benutzer ausgewählten Text, live gelesen ("" ohne Auswahl), mit den Zeilenenden von is_text |
of_select_range (long al_from_line, long al_from_col, long al_to_line, long al_to_col) | Wählt von (Zeile, Spalte) bis (Zeile, Spalte) aus, alles ab 1, und holt die Auswahl auf den Bildschirm; die Einfügemarke steht am zuletzt angegebenen Ende, und eine Spalte hinter dem Ende ihrer Zeile bleibt an diesem Ende. Mit ib_track_caret folgt ue_caret_changed, wie bei einem Ziehen. Liefert 0, sobald angewendet, -5 bei einer Zeile außerhalb des Dokuments oder einer Spalte kleiner als 1, -4, solange der Editor gefaltet ist, -2, wenn die Komponente nicht erstellt ist |
of_line_count ( ) | Liefert die Anzahl der Zeilen des Dokuments, gefaltet oder nicht, live gelesen — die Obergrenze eines Dialogs „Gehe zu Zeile“ |
of_add_marker (long al_line, string as_kind, string as_tooltip) | Markiert eine Zeile der Leiste mit einer Diagnose — MARKER_ERROR, MARKER_WARNING oder MARKER_INFO — und einem Tooltip (Markup zulässig): was ein Compiler sagt, dort, wo er es sagt. Mehrere Markierungen können sich eine Zeile teilen: die schwerste bestimmt das Symbol, der Tooltip listet alle auf. Sie gehören zum Dokument: ein neues is_text entfernt sie. Liefert 0, sobald angewendet, -5 bei einer Zeile außerhalb des Dokuments oder einer unbekannten Art, -2, wenn die Komponente nicht erstellt ist |
of_remove_marker (long al_line) | Entfernt alle Markierungen einer Zeile. Liefert 0, sobald entfernt, -5, wenn die Zeile keine trägt, -2, wenn die Komponente nicht erstellt ist |
of_clear_markers ( ) | Entfernt alle Markierungen der Leiste. Liefert 0, sobald angewendet, -2, wenn die Komponente nicht erstellt ist |
of_marker_count ( ) | Liefert die Anzahl der Markierungen in der Leiste, live gelesen (zwei auf einer Zeile zählen als zwei) |
of_reset ( ) | Setzt alle Eigenschaften auf ihren Standard zurück und leert den Editor. Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist |
of_set_redraw (boolean) | Fasst eine Folge von Änderungen zu einer einzigen Darstellung zusammen. Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist |
of_save_as_png (string) · of_save_as_jpg (string) | Exportiert die Darstellung als Bild. Liefert 0 nach dem Schreiben des Bildes, -4 wenn das Schreiben fehlschlägt, -2 wenn die Komponente nicht erzeugt ist |
Events #
| Event | Ausgelöst wenn |
|---|---|
ue_changed ( ) | Der Benutzer hat den Inhalt geändert und seine Eingabe hat sich gesetzt — auch nach of_insert_text oder einem Ersetzen ausgelöst. Das Event trägt nichts: es zu füllen hieße, bei jeder gesetzten Eingabe das ganze Dokument neu zu lesen, für eine Anwendung, die meist nur wissen will, dass es sich geändert hat. Wer den Code will, fragt danach — is_text oder of_get_text(); ib_modified sagt, ob er vom gespeicherten Text abweicht |
ue_caret_changed (long al_line, long al_col) | Die Einfügemarke hat sich bewegt (Taste, Klick, Ziehen, Eingabe oder Ihr Code); Zeile und Spalte ab 1 gezählt, die Zeile ist im gefalteten Zustand die der Leiste, die Spalte der Rang des Zeichens in seiner Zeile (ein Tabulator zählt als eins). Ihr Code löst es wie die Geste aus (il_caret_line, il_caret_column, of_select_range, of_insert_text, of_replace); nichts, wenn die Einfügemarke bleibt, wo sie ist, und ein neues Dokument (is_text, ein Laden) sagt nichts über die Einfügemarke — erfordert ib_track_caret = true |
ue_find_result (long al_count, long al_index) | Eine Suche ist abgeschlossen oder springt zu einem anderen Vorkommen: al_count Vorkommen gefunden, al_index = Rang des gerade hervorgehobenen (ab 1). Während der Eingabe wird es nur ausgelöst, wenn sich die Anzahl ändert; das Schließen der Leiste löst es nicht aus; eine leere Suche ebenso wenig |
ue_drop_files (string as_files[]) | Dateien wurden aus Windows abgelegt: vollständige Pfade, ein Eintrag pro Datei. Erfordert ib_allow_drop = true |
ue_drag_enter ( ) | Ein Dateiziehvorgang gelangt auf den Editor (ib_allow_drop) |
ue_drag_leave ( ) | Der Dateiziehvorgang verlässt den Editor |
ue_ready ( ) | Die Komponente ist fertig geladen; alles zuvor Gesendete wurde nachgespielt |
ue_runtime_missing ( ) | Die WebView2-Runtime fehlt: die Komponente bleibt leer |
ue_bg_color (long al_color) | Die Komponente hat ihre Design-Hintergrundfarbe berechnet; das Userobject hat sie bereits übernommen (backcolor) |
Tastatur #
| Taste | Wirkung |
|---|---|
| Tab | Rückt bis zum nächsten Tabstopp ein (ii_tab_size); mehrere Zeilen ausgewählt: rückt den ganzen Block ein |
| Umschalt+Tab | Rückt die Zeile oder den Block aus |
| Eingabe | Neue Zeile mit derselben Einrückung, eine Stufe tiefer nach {, ( oder [ |
| Strg+F | Öffnet die Suchleiste, mit der Auswahl gefüllt (ib_search_enabled) |
| Strg+H | Öffnet die Leiste mit ihrer Ersetzen-Zeile (nur bei bearbeitbarem Editor) |
| F3 · Umschalt+F3 | Nächster · vorheriger Treffer, aus dem Code oder der Leiste |
| Eingabe · Umschalt+Eingabe (Leiste) | Nächster · vorheriger Treffer; im Ersetzen-Feld ersetzt Eingabe den aktuellen Treffer und Strg+Eingabe alle |
| Esc | Schließt die Leiste und setzt die Einfügemarke auf den aktuellen Treffer |
| Tab, dann Eingabe oder Leertaste (Leiste) | Erreicht eine Faltmarkierung und faltet sie zu oder auf (ib_folding) |
Die Spalte, die ue_caret_changed und il_caret_column melden, ist der Rang des Zeichens in seiner Zeile: ein Tabulator zählt als eins, unabhängig von seiner Breite auf dem Bildschirm.
Beispiele #
Ein Editor für SQL-Abfragen #
// Das Zeichnen waehrend der Einrichtung anhalten
uo_query.of_set_redraw(/*on*/ false)
// SQL-Hervorhebung, dann die anzuzeigende Abfrage
uo_query.is_syntax = uo_query.SYNTAX_SQL
uo_query.is_text = "-- Beste Kunden nach vereinnahmtem Umsatz~r~n" &
+ "SELECT c.name, SUM(o.amount) AS total~r~n" &
+ "FROM customer c~r~n" &
+ " INNER JOIN orders o ON o.cust_id = c.id~r~n" &
+ "WHERE o.status = 'paid'~r~n" &
+ "GROUP BY c.name~r~n" &
+ "ORDER BY total DESC"
// Ein einziges Neuzeichnen, alles auf einmal
uo_query.of_set_redraw(/*on*/ true)
// clicked-Event von cb_execute
string ls_sql
// Die Abfrage so ausfuehren, wie sie eingegeben wurde
ls_sql = uo_query.of_get_text() // die tatsaechliche Eingabe des Benutzers
of_execute(ls_sql)
Ein schreibgeschützter Betrachter #
Ideal, um generierten Code, ein Protokoll oder einen Auszug zu zeigen, den der Benutzer lesen, aber nicht ändern soll.
// PowerScript-Hervorhebung
uo_preview.is_syntax = uo_preview.SYNTAX_POWERSCRIPT
// Ein reiner Betrachter: kein Cursor, keine Leiste, keine Hervorhebung
uo_preview.ib_readonly = true // nur lesen, keine Einfuegemarke
uo_preview.ib_line_numbers = false // blendet die Nummernleiste aus
uo_preview.ib_current_line = false // keine Hervorhebung der aktuellen Zeile
uo_preview.ib_wrap = true // bricht um, statt zu scrollen
uo_preview.ii_tab_size = 2 // Tabulatoren ueber 2 Spalten dargestellt
// Der anzuzeigende Code
uo_preview.is_text = of_generate_code()
Die Position der Einfügemarke in einer Statusleiste verfolgen #
// Jede Cursorbewegung melden (ue_caret_changed)
uo_editor.ib_track_caret = true // ausdrueckliches Opt-in : sonst gar kein Event
// ue_caret_changed-Event von uo_editor : (long al_line, long al_col)
uo_status.of_panel(/*key*/ "pos").is_text = "Zeile " + String(al_line) + ", Sp. " + String(al_col)
Ohne ib_track_caret meldet die Einfügemarke nichts: Dieser Auslöser feuert sehr häufig und bleibt abgeschaltet, solange Sie ihn nicht anfordern.
Suchen und zu einer Zeile springen #
// Oeffnet die Suchleiste und hebt alle Vorkommen hervor
uo_editor.of_find(/*text*/ "ll_total")
// ue_find_result-Event von uo_editor : (long al_count, long al_index)
if al_count = 0 then
uo_status.of_panel(/*key*/ "main").is_text = "Kein Treffer"
else
uo_status.of_panel(/*key*/ "main").is_text = String(al_index) + " / " + String(al_count)
end if
// Zu der Zeile gehen, die ein Compiler gemeldet hat, und sie in der Leiste markieren
uo_editor.of_add_marker(/*line*/ ll_error_line, /*kind*/ uo_editor.MARKER_ERROR, /*tooltip*/ ls_error_text)
uo_editor.il_caret_line = ll_error_line // die Einfuegemarke geht dorthin, die Zeile kommt auf den Bildschirm
uo_editor.of_focus_webview() // der Benutzer korrigiert sofort
Eine aus dem Explorer abgelegte Datei öffnen #
// Accept files dropped from the Explorer
uo_editor.ib_allow_drop = true
// ue_drop_files-Event von uo_editor : (string as_files[])
string ls_content
integer li_file
// as_files[1] traegt den VOLLSTAENDIGEN Pfad der ersten abgelegten Datei
li_file = FileOpen(as_files[1], StreamMode!, Read!)
if li_file > 0 then
FileReadEx(li_file, ls_content)
FileClose(li_file)
// Nach der Dateiendung hervorheben, dann den Inhalt anzeigen
uo_editor.is_syntax = of_syntax_for_extension(as_files[1])
uo_editor.is_text = ls_content
end if
Auf Änderungen reagieren #
// ue_changed-Event von uo_editor : ( )
cb_save.enabled = uo_editor.ib_modified // Rueckgaengig bis zum gespeicherten Text setzt ihn auf false zurueck
// clicked-Event von cb_save
if of_save_script(uo_editor.is_text) = 1 then
uo_editor.ib_modified = false // der gespeicherte Text wird zur Referenz
cb_save.enabled = false
end if
Das Event wird erst ausgelöst, wenn die Eingabe zur Ruhe gekommen ist: Fortlaufendes Tippen erzeugt nicht ein Event pro Tastendruck.
Eine Variable im ganzen Skript umbenennen #
// Local variables
long ll_count
// Nur ganze Woerter: ll_total2 ist eine andere Variable
uo_editor.ib_find_whole_word = true
ll_count = uo_editor.of_replace_all(/*find*/ "ll_total", /*replace*/ "ldc_amount") // ein einziges Strg+Z macht alles rueckgaengig
Best Practices #
- Setzen Sie
is_syntaximmer voris_text: Der Code ist schon beim ersten Zeichnen eingefärbt, ohne sichtbares Nachfärben. - Für eine reine Anzeige ergibt die Kombination
ib_readonly+ib_line_numbers = false+ib_wrapeinen schlichten Betrachter, der nicht mehr wie ein Editor aussieht. - Um eine Eingabe abzuholen, lesen Sie
is_text(oderof_get_text()), sobald die Eingabe sich gesetzt hat, — also in Ihremue_changed, das Ihnen sagt, wann. ib_foldinglohnt sich nur bei langen, strukturierten Dateien; lassen Sie es bei kurzen Auszügen ausgeschaltet. Schalten Sie es aus, bevor Sie Änderungen zulassen: eine gefaltete Gliederung wird gelesen, nicht bearbeitet, undof_get_text()liefert stets die ganze Quelle, geschlossene Regionen eingeschlossen.- Klammern Sie das Laden einer großen Datei mit
of_set_redraw(false)/of_set_redraw(true)ein. - Rufen Sie
of_reset()auf, bevor Sie ein Dokument anderer Art laden: Sonst bleiben die vorherige Sprache, die Tabulatorbreite oder der Schreibschutzmodus bestehen. - Setzen Sie
ib_modifiednach dem Speichern auffalsezurück: beim ersten Tastendruck wird es wiedertrue, undfalse, wenn der Benutzer bis zum gespeicherten Text rückgängig macht. - Um die Fehler einer Kompilierung zu zeigen:
of_clear_markers(), dann einof_add_markerpro Diagnose undil_caret_lineauf die erste.
Vom gemeinsamen Sockel geerbt #
Diese Mitglieder gibt es bei jeder visuellen Komponente — sie sind nicht dieser eigen. Sie werden einmal in den übergreifenden Kapiteln beschrieben; diese Tabelle sagt nur, wo man sie liest.
| Mitglieder | Rolle | Beschrieben in |
|---|---|---|
of_reset | Die Komponente zurücksetzen | 3.6 Eine Komponente zurücksetzen: of_reset() |
of_register_shortcut · of_clear_shortcuts | Tastenkürzel der Komponente | 3.5 Tastenkombinationen |
of_is_created · of_is_ready · of_get_last_error | Ob sie entstanden ist, ob sie bereit ist, was fehlschlug | 3.7 Diagnose |
of_save_as_png · of_save_as_jpg | Die Darstellung als Bild exportieren | 3.8 Die Darstellung als Bild exportieren |
of_set_redraw | Änderungen zu einem einzigen Neuzeichnen bündeln | 3.10 Best Practices |
of_preload_icons | Symbole ohne Verzögerung | Sofortige Anzeige: of_icon |
of_set_translation | Eine Beschriftung der Komponente übersetzen | 5.2 Eine Beschriftung anpassen: of_set_translation |
of_focus_webview | Der Komponente den Fokus geben | 6.4 Tastatur und Fokus |
of_print · of_print_to_pdf | Drucken oder ein PDF schreiben | 6.9 Drucken |
of_set_property · of_get_property · of_component_name | Eine Eigenschaft über ihren Namen steuern | 3.1 Die Eigenschaften-Engine |
Zwei Helfer werden nicht geerbt: of_icon und of_escape_markup liegen auf n_pbt_utils. Deklarieren Sie eines — n_pbt_utils lnv_utils, nichts zu erzeugen — und rufen Sie sie darauf auf.