GTK+-Programmierung mit FreePascal (Referenz)
Textboxen
Textboxen sind große Eingabefelder. Sie unterstützen automatisch Copy und Paste und Wortumbruch. Die Position im Text wird durch ein Adjustment bestimmt, welches mit Scrollbars oder ähnlichen Widgets verbunden werden kann. Textboxen sind fähig, ein Adjustment selbst zu erstellen, was speziell für eine Textbox geeignet ist. Sie ändern die Einstellungen dieses Adjustments dann automatisch hingehend ihrer Größe und ähnlichen Faktoren. Folgendermaßen wird eine Textbox erstellt:
gtk_text_new(hadj, vadj);
Als hadj
und vadj
werden Adjustments für horizontale und vertikale Scrollrichtung übergeben. Wird hier anstelle eines Adjustments nil
(ein NULL-Zeiger) übergeben, so werden diese automatisch erstellt. Auf die selbsterstellten Adjustments muss über den record
der Textbox zugegriffen werden. Dies geschieht über GTK_TEXT(textbox)^.vadj
bzw. GTK_TEXT(textbox)^.hadj
.
Wichtige Funktionen zu Textboxen
Funktion | Bedeutung |
---|---|
gtk_text_set_editable(textbox, true/false) | Legt fest, ob textbox editierbar ist oder nicht |
gtk_text_set_word_wrap(textbox, 1/0) | Legt fest, ob textbox Wortumbruch machen soll oder nicht. Wegen "schlampiger" Implementierung muss hier 1 und 0 anstelle von true oder false verwendet werden, da ein integer verlangt wird |
gtk_text_freeze(texbox) gtk_text_thaw(texbox) | Friert eine Textbox ein bzw. taut sie auf. Das ist nötig, wenn am Text programmseitig Änderungen vorgenommen werden sollen. Im gefrorenen Zustand kann der Benutzer die Änderungen nicht live sehen. |
gtk_text_insert(texbox, vordergrund_farbe,<br />hintergrund_farbe, schrift, text, länge) | Fügt einen Text in eine Textbox ein, für die Farb- und Schriftwerte kann nil übergeben werden, da diese in diesem Artikel nicht behandelt werden. text ist der einzufügende Text, von dem länge Zeichen eingefügt werden. Wird als länge der Wert -1 übergeben, wird der String bis zum Ende eingefügt. |
gtk_text_get_length(text) | Gibt die Länge des eingegebenen Textes zurück |
Da Textboxen eine Untergruppe der GtkEditable
s sind, kann man auch folgende Funktionen auf sie anwenden:
Wichtige Funktionen zu Editables
Funktion | Bedeutung |
---|---|
gtk_editable_insert_text(textbox, text, länge, position) | Fügt neuen text bis zu länge Zeichen an position ein |
gtk_editable_delete_text(textbox, start, ende) | Löscht Text von start bis ende |
gtk_editable_cut_clipboard(textbox)<br /> gtk_editable_copy_clipboard(texbox)<br /> gtk_editable_paste_clipboard(texbox) | Macht cut/copy/paste |
gtk_editable_get_chars(texbox, start, ende) | Gibt den Text von start bis ende als pchar zurück |
Beispielprogramm zu Textboxen
Dieses Beispielprogramm enthält eine scrollfähige Textbox mit automatischem Wortumbruch. Bei Beendigung des Programms wird der Text auf der Standard-Ausgabe mit writeln
vollständig ausgegeben. Hier darf nicht {$APPTYPE GUI}
verwendet werden, da die Standard-Ausgabe dort fehlt.