15 edittext (editierbarer Text)

Zur Handhabung von vom Benutzer editierbaren Texten dient das Schlüsselwort edittext.

Definition

{ export | reexport } { model } edittext { <Bezeichner> }
{
  <Standardattribute>
  <Allgemeine Attribute>
  <Geometrieattribute>
  <Hierarchieattribute>
  <Layoutattribute>
  <Textattribute>
  <Scrollbarattribute>
  <Objektspezifische Attribute>
}

Innerhalb des Objektes Edittext kann der Textcursor mit den Cursortasten der Tastatur bewegt werden.

Die Backspace-Taste löscht den links vom Textcursor stehenden Buchstaben, die Delete-Taste löscht den rechts vom Textcursor stehenden Buchstaben.

Alle Buchstaben- und Zahlentasten werden als eingegebenes Zeichen verarbeitet.

Ereignisse

activate

charinput

cut

deselect

deselect_enter

extevent

focus

help

key

modified

paste

select

Kinder

document

record

transformer

Vater

groupbox

layoutbox

module

notepage

splitbox

toolbar

window

Menü

Popup-Menü

15.1 Attribute

.acc_label

.acc_text

.accelerator

.active

alignment

.bgc

.borderraster

.borderstyle

.borderwidth

.class

.content

.control

.cursor

.cut_pending

.cut_pending_changed

.dialog

.document[integer]

.editable

.endsel

.external

.external[integer]

.fgc

.firstrecord

.focus

.font

.format

.formatfunc

.function

.groupbox

.height

.help

.hinttext

.hsb_visible

.index

.label

.lastrecord

.layoutbox

.mapped

.maxchars

.member[integer]

.membercount

.menu

.model

.multiline

.navigable

.notepage

options[enum]

.parent

.posraster

.real_height

.real_modified

.real_sensitive

.real_visible

.real_width

.real_x

.real_y

.record[integer]

.recordcount

.scope

.sensitive

.sizeraster

startsel

.statushelp

.textwidth

.toolhelp

.toolbar

.userdata

.visible

.vsb_visible

.width

.window

.xauto

.xleft

xmargin

.xright

.yauto

.ybottom

ymargin

.ytop

15.2 Spezifische Attribute

Attribut Beschreibung

alignment
(nur IDM für Windows)

Ausrichtung des Textes im Objekt.

.borderraster

Legt die Art der Geometrieberechnung bei aktivem Raster fest. Die detaillierte Beschreibung finden sie in der Attribut-Beschreibung in der „Attributreferenz“.

Nur aktiv, wenn .multiline = true.

.borderstyle

Definiert den Stil, also Darstellung und Ausprägung, des Rahmens (ab IDM-Version A.06.01.a).

Attribut wird unterstützt, jedoch nur border_none und border_toolkit zulässig. border_plain, border_raised und border_sunken werden als border_toolkit umgesetzt.

.content

Inhalt (Text) des Objekts.

Siehe auch Kapitel „Edittext als Kind einer Spinbox“.

.editable

Steuert die Editierbarkeit des Objekts.

.endsel

Ende eines selektierten Teilstücks in einem Editierbereich.

Siehe auch Kapitel „Markieren von Text und Cursorposition“.

.format

Definiert ein Format für den vom Objekt angezeigten String.

.formatfunc

Gibt die zum Objekt gehörende Formatfunktion an.

.hinttext Platzhalter- oder Hinweistext des Objektes. Siehe auch Kapitel „Hinweise zum Attribut .hinttext“

.hsb_visible

Sichtbarkeit der horizontalen Scrollbar.

Siehe auch Kapitel „Multiline-Edittext und Scrollbarattribute“.

.maxchars

Maximale Anzahl möglicher Zeichen im Eingabestring.

.multiline

Steuert, ob das Objekt ein- oder mehrzeilig dargestellt wird.

Siehe auch Kapitel „Multiline-Edittext und Scrollbarattribute“.

.navigable

Steuert die Fokussierbarkeit (Erreichbarkeit des Objekts mittels Tastatur).

options[enum]

Optionen des Objekts.

Indizes:

.real_modified
(nicht unter Motif)

Zeigt an, ob der Inhalt seit dem Fokuserhalt tatsächlich geändert wurde.

startsel

Anfang eines selektierten Teilstücks in einem Editierbereich, siehe auch Kapitel „Markieren von Text und Cursorposition“.

.textwidth
(nur IDM für Windows)

Textbreite eines RTF-Edittextes (siehe auch Kapitel „Attribut .textwidth“).

.vsb_visible

Sichtbarkeit der vertikalen Scrollbar.

Siehe auch Kapitel „Multiline-Edittext und Scrollbarattribute“.

xmargin

Horizontaler Abstand zwischen Umrandung und Text des Objekts in Pixeln, siehe auch Kapitel „Hinweise zu den Attributen .xmargin und .ymargin“.

ymargin
(nur Motif)

Vertikaler Abstand zwischen Umrandung und Text des Objekts in Pixeln, siehe auch Kapitel „Hinweise zu den Attributen .xmargin und .ymargin“.

15.2.1 Hinweise zu den Attributen .xmargin und .ymargin

Der Abstand des Inhalts zum rechten und linken Rand bestimmt das Attribut .xmargin (unter Microsoft Windows muss am Dialog das Attribut .options[opt_et_margin] = false gesetzt sein (Defaultwert), außerdem kann bei überlangen Texten (auch abhängig vom Windows-Patchlevel) und einem einzeiligen Edittext unter Umständen der Abstand zum rechten Rand ignoriert werden.).

Zusätzlich kann unter Motif noch der Abstand zum oberen und unteren Rand mittels .ymargin gesetzt werden.

Sowohl .xmargin als auch .ymargin können unter bestimmten Bedingungen die Größe des Objekts beeinflussen, näheres dazu in der „Attributreferenz“ bei den Detailbeschreibungen.

15.2.2 Hinweise zum Attribut .hinttext

Dieses Attribut wird nur von Windows und Qt unterstützt.

Beim edittext-Objekt unter Windows wird .hinttext nur unterstützt, wenn die Attribute .multiline und .options[opt_rtf] den Wert false besitzen.

15.2.3 Multiline-Edittext und Scrollbarattribute

Ein editierbarer Text kann nur dann mit Scrollbarattributen .hsb_visible und .vsb_visible versehen werden, wenn das Attribut .multiline auf true gesetzt ist. (Die Attribute .multiline sowie .vsb_visible und .hsb_visible sind unter Motif unabhängig voneinander.)

15.2.4 Markieren von Text und Cursorposition

Um den Cursor innerhalb eines Edittextes zu setzen oder Bereiche eines Edittextes zu markieren müssen die Attribute .startsel und .endsel benutzt werden. Werden Sie auf denselben Wert gesetzt, so geben sie die Cursorposition an. Werden Sie auf unterschiedliche Werte gesetzt, geben sie den Bereich an, der selektiert erscheinen soll. In der Regel bestimmt das Attribut .endsel die Cursorposition (zu Ausnahmen siehe .startsel und .endsel in der „Attributreferenz“). In Normalfall wird dieser Selektionsbereich aber nur angezeigt, wenn der Edittext den Fokus besitzt.

15.2.5 Edittext als Kind einer Spinbox

Ist ein Edittext ein Kindobjekt eines spinbox Objekts, darf das Attribut .content nicht genutzt werden. Die Wertsetzung erfolgt ausschließlich über die entsprechenden Attribute des spinbox Objekts.

15.3 Hinweis zu veralteten Attributen

Die veralteten Attribute .charwidth, .charheight und .focusable werden nicht mehr unterstützt und erzeugen eine ignoring-Warnung beim Setzen und Zurücksetzen (setinherit) des jeweiligen Attributs sowie ein FAIL beim Auslesen dieser Attribute.

15.4 Editierbarer Text mit Formatierungen (RTF-Edittext)

Unter Microsoft Windows verfügt der Edittext über einen zusätzlichen Modus zur Unterstützung von formatiertem Text im Rich Text Format (RTF). Dieser Modus wird eingeschaltet, indem .options[opt_rtf] = true gesetzt wird.

RTF ist ein von Microsoft spezifiziertes Textformat, das Formatierungsanweisungen enthält. RTF-Dateien können zum Beispiel mit dem Windows-Programm WordPad, Microsoft Office Word und dem Writer von OpenOffice bzw. LibreOffice bearbeitet werden.

15.4.1 Besonderheiten einiger Attribute

Die Bedeutung der Attribute des RTF-Edittextes entspricht weitgehend ihrer Bedeutung bei einem Edittext ohne Formatierungen. Allerdings sind bei manchen Attributen Besonderheiten zu beachten, die damit zusammenhängen, dass sich Content-String – also der Wert des Attributs .content – und angezeigter Text unterscheiden.

Der Content-String enthält Formatierungsanweisungen wie \i, \ul und \par, die nicht als Text angezeigt werden, sondern in den genannten Beispielen dazu führen, dass Text in der Anzeige kursiv ist, unterstrichen wird oder in einem neuen Absatz steht. Außerdem kann der RTF-Edittext den Content-String umstrukturieren, zum Beispiel indem er Angaben im RTF-Header ergänzt.

Daraus folgt, dass sich für Attribute, bei denen die Textlänge oder die Position im Text eine Rolle spielt, Besonderheiten ergeben:

15.4.2 Attribut .textwidth

Die maximale Breite des Textes kann beim RTF-Edittext unabhängig von der Breite des Edittextes definiert werden. Das Festlegen der Textbreite ist beispielsweise sinnvoll, um die Ausrichtung von Texten (linksbündig, rechtsbündig oder zentriert) sichtbar zu machen.

Mit dem Attribut .textwidth kann die maximale Textbreite gesetzt und abgefragt werden. Wird .textwidth auf einen Wert <= 0 gesetzt, ergibt sich die Textbreite automatisch und hängt vom der Sichtbarkeit der horizontalen Scrollbar ab. Die Einzelheiten dazu sind beim Attribut .textwidth in der „Attributreferenz“ beschrieben.

15.4.3 Inhalt bearbeiten und formatieren

Der Inhalt eines RTF-Edittextes kann mit der Methode :replacetext() geändert werden. Mit der Methode :gettext() kann Text abgefragt und mit :findtext() kann im Inhalt nach einem Text gesucht werden. :replacetext() kann reinen, unformatierten Text (Plain Text) oder Text im RTF-Format einfügen, :gettext() kann den abgefragten Text in beiden Formaten zurückgeben. Um Text zu formatieren oder Formatierungen abzufragen stehen die Methoden :setformat() und :getformat() zur Verfügung.

Diese Methoden sind in der „Methodenreferenz“ beschrieben.

Je nach Schriftart kann es vorkommen, dass Formatierungsanweisungen bzw. mit :setformat() gesetzte Formatierungsattribute vom Windows-Objekt, das der IDM für den RTF-Edittext verwendet, nicht beachtet werden. Unter Windows 7 ist dies zum Beispiel bei text_bold so, wenn explizit keine Schriftart gesetzt und daher implizit die Schriftart System verwendet wird.

15.5 Anmerkungen zum IDM für Windows

15.6 Anmerkungen zum IDM für Motif

15.7 Anmerkungen zum IDM für Qt

15.8 Beispiel

Einzeiliges editierbares Textfeld mit Format

dialog Test

{

}

window Wn

{

  .height 169;

  .title "Fenster mit Eingabefeld";

 

  child statictext

  {

    .sensitive false;

    .xleft 1;

    .ytop 74;

    .text "Numerisch";

  }

 

  child edittext Et1

  {

    .active false;

    .xleft 95;

    .width 170;

    .ytop 69;

    .format "NNNNNNNN";

    .content "";

  }

 

  child statictext

  {

    .sensitive false;

    .xleft 10;

    .ytop 121;

    .text "Alles";

  }

 

  child edittext Et2

  {

    .active false;

    .xleft 95;

    .width 170;

    .ytop 118;

    .format "XXXXXXXXXXXXXX";

    .content "";

  }

}

Abbildung 16-6: Editierbarer Text

Mehrzeiliger editierbarer Text

dialog Test

{

}

window Wn

{

  .width 289;

  .height 201;

  .title "Fenster mit mehrzeiligem Edittext";

 

  child edittext EtMehrzeilig

  {

    .active false;

    .xleft 62;

    .width 167;

    .ytop 51;

    .height 109;

    .content "Das ist ein \nmehrzeiliger\nText";

    .multiline true;

    .hsb_visible true;

    .vsb_visible true;

  }

}

Abbildung 16-7: Mehrzeiliger editierbarer Text