31 poptext (Combobox)

Mit Hilfe dieses Objektes können textuelle Informationen platzsparend dargestellt werden, wenn der Benutzer aus verschiedenen Informationen immer nur eine benötigt.

Definition

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

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ü

31.1 Attribute

.acc_label

.acc_text

.accelerator

.activeitem

.bgc

.borderraster

.bgc

content

.control

.cursor

.cut_pending

.cut_pending_changed

.dialog

.document[integer]

.editable

.endsel

.external

.external[integer]

.fgc

.firstrecord

.focus

.font

.function

.format

.formatfunc

.groupbox

.height

.help

.hinttext

.index

.itemcount

.label

.lastrecord

.layoutbox

.mapped

.maxchars

.member[integer]

.membercount

.menu

.model

.notepage

options[enum]

.parent

.picheight

.picture[integer]

.picture_hilite[integer]

.picwidth

.posraster

.real_height

.real_modified

.real_sensitive

.real_visible

.real_width

.real_x

.real_y

.record[integer]

.recordcount

.scope

.sensitive

.showitem

.sizeraster

startsel

.statushelp

style

.text[integer]

.toolbar

.userdata

.userdata[integer]

.visible

.width

.window

.xauto

.xleft

xmargin

.xright

.yauto

.ybottom

.ytop

31.2 Spezifische Attribute

Attribut Beschreibung

.activeitem

Index des aktuell angezeigten Textes.

Siehe auch Kapitel „Textattribute und .activeitem“.

.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 .style = listbox.

content

Liefert, je nach der in .style getroffenen Einstellung, den Inhalt des aktuell angezeigten Textes bzw. den Inhalt des Eingabefeldes.

Siehe auch Kapitel „Textattribute und .activeitem“.

.editable

Editierbarkeit des Objekts, auch abhängig vom jeweiligen Wert in .style.

.endsel

Ende eines selektierten Teilstücks in einem Editierbereich.

.format

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

.formatfunc

Gibt die zum Objekt gehörende Formatfunktion an.

.height

Höhe des Objekts.

Beim Wert 0 berechnet der IDM aufgrund des aktuellen Zeichensatzes automatisch die für das Objekt richtige Objektgröße.

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

.itemcount

Anzahl der Einträge des Objekts.

.maxchars

Maximale Anzahl möglicher Zeichen im Eingabestring.

options[enum]

Optionen des Objekts.

Mögliche Indizes:

  • opt_center_toolhelp (nur IDM für Windows)
  • opt_hscroll (nur IDM für Windows, ab IDM-Version A.06.01.h)
  • opt_mnemonic
  • opt_old_select (bestimmt das Auslösen von select und activate-Ereignissen, siehe auch Kapitel „Attribut zur Steuerung des select- und activate Ereignisses“)
  • opt_quick_navigate (nur IDM für Motif)
  • opt_sort (nur IDM für Windows)

.picheight

Angabe der Höhe eines neben den Einträgen dargestellten Bildes.

.picture[integer]

Zum jeweiligen Eintrag gehörendes Bild (IDM für Windows und IDM für Qt).

.picture_hilite[integer]

Bild, welches bei aktivem Eintrag I dargestellt wird IDM für Windows und IDM für Qt).

.picwidth

Angabe der Breite eines neben den Einträgen dargestellten Bildes.

.real_modified
(nicht unter Motif)

Zeigt bei .style = edittext und .style = listbox an, ob der Inhalt seit dem Fokuserhalt tatsächlich geändert wurde.

.showitem

Legt die in aufgeklapptem Zustand dargestellte Anzahl der Einträge fest (nur MS Windows und Motif ab Version 2.1).

startsel

Anfang eines selektierten Teilstücks in einem Editierbereich.

style

Steuert die Art der Darstellung und der Editierbarkeit der Combobox.

.text[integer]

Definiert die einzelnen anzuzeigenden Texte des Objekts.

Siehe auch Kapitel „Textattribute und .activeitem“.

.width

Breite des Objekts.

Beim Wert 0 berechnet der IDM aufgrund des aktuellen Zeichensatzes automatisch die für das Objekt richtige Objektgröße.

.userdata[integer]

Userdata für beliebige Daten zu jedem Eintrag des Objekts.

xmargin

Horizontaler Abstand zwischen Umrandung und Text des Objekts in Pixeln.

Siehe Kapitel „Positionierung des Textes im Objekt“.

31.2.1 Attribut zur Steuerung des select- und activate Ereignisses

Das Attribut .options[opt_old_select] steuert die Erzeugung der activate- und select-Ereignisse und steht standardmäßig auf false.

Steht das Attribut .options[opt_old_select] auf false, so werden select/activate-Ereignisse analog zu den anderen Auswahlobjekten wie Listbox/Treeview generiert.

Erste Änderung zum alten Verhalten ist, das activate-Ereignisse nicht mehr das Erhalten des Fokus (edittext&listbox-Stil) anzeigen, sondern eine Änderung im Aktivierungszustand (.activeitem-Attribut). Zweitens wird ein select-Ereignis nur bei einer "abgeschlossenen" Selektion des Benutzers erzeugt, selbst wenn der gleiche Eintrag nochmals selektiert wird. Abgeschlossen heißt, dass damit die Liste zugeht (Ausnahmen: Bemerkung (1) und (2)) bzw. die Änderung überhaupt kein Sichtbarmachen der Liste erfordert.

Datentyp

boolean

Wertebereich

false, true

Standardwert

false

Zugriff

get, set

Unterstützt auf

Microsoft Windows, Unix

Zusammenfassung, wann ein select- oder activate-Ereignis am Poptext bei .options[opt_old_select] = false kommt:

Aktion

Motif 1.2

Motif 2.1

MS Win

Ereignisse

Cursor-Selektion
(Liste zu,
auf anderen Eintrag)

*


*


*

-
activate und select

Cursor-Selektion
(Liste offen,
auf anderen Eintrag)

*


*


*

-
activate
(und select im listbox-Stil)

Maus-Selektion
(Liste offen,
gleicher Eintrag)

*

*

*

select

Maus-Selektion
(Liste offen,
anderer Eintrag)

*

*

*

activate und select

Liste schließen
(z.B. Return aber keine
Maus-Selektion)

*

*

*

select

Liste abbrechen (2)
(z.B. Esc)

*

*

*

activate um auf
Originaleintrag
zurückzusetzen

Bemerkungen

  1. Beim Poptext im Stil Listbox ist die Liste immer offen. Insofern verhält sich hier die Tastatur-Selektion analog zur Maus-Selektion. Auch kann natürlich in diesem Stil die Liste nicht "abgebrochen" werden.
  2. Nicht auf allen Fenstersystemen gibt es die Möglichkeit, eine offene Liste abzubrechen.
  3. Welche Tasten zur Cursor-Selektion dienen ist systemabhängig; für gewöhnlich aber die Cursortasten Aufwärts und Abwärts.

Beispiele zur Nutzung der einzelnen Events bei .options[opt_old_select] = false

Um jegliche Änderung, auch bei geöffneter Liste mitzubekommen

poptext Pt {
  .options[opt_old_select] false;
  on activate {...}
}

Um nur bei der Selektion eines anderen Eintrags zu reagieren

poptext Pt {
  .options[opt_old_select] false;
  on select {
    if (thisevent.value <> thisevent.index) then
      ...
    endif}
}

Um auf jede Selektion zu reagieren

poptext Pt {
  .options[opt_old_select] false;
  on select {...}
}

Nicht mehr zu benutzen ist on activate, wenn damit der Erhalt des Fokus gemeint ist. Dies ist nun wie folgt zu schreiben:

poptext Pt {
  .options[opt_old_select] false;
  on focus {...}
}

31.2.2 Textattribute und .activeitem

Zum Zugriff auf den Inhaltsvektor des Poptextes ist das Attribut .text[integer] zu benutzen.

Die Attribute .startsel und .endsel sind nur in den Styles "edittext" und "listbox" aktiv. Im Normalfall (.style poptext) werden diese Attribute ignoriert. Das Attribut .content ist im Style poptext nur lesbar und darf nicht gesetzt werden.

Beim Poptext mit .style listbox oder edittext ist .content ein dynamisches Attribut; es kann nur zur Laufzeit gesetzt werden, statisch in der Dialogdatei ist dieses Attribut nicht definierbar.

Beim Poptext mit .style = edittext ist .content ein eigenständiges Attribut, dessen Wert nicht unbedingt im Inhaltsvektor enthalten sein muss. Daher bleibt .content erhalten und im Eingabefeld stehen, wenn die Liste des Poptextes geleert wird, zum Beispiel indem man .itemcount = 0 setzt.

Im Gegensatz zu .text[integer] ist .content nur als skalares Attribut (also ohne Index) verfügbar.

Das .activeitem Attribut an einem editierbaren poptext-Objekt (.style = listbox oder .style = edittext) liefert für ein sichtbar geschaltetes poptext-Objekt einen "dynamischen" Wert wenn .content geändert wurde. Der gelieferte Wert ist typisch für das Fenstersystem. In der Regel sucht das Fenstersystem in der Liste nach der ersten Zeile, die dem Wert von .content entspricht. Es wird dann die Zeilennummer dieser Zeile geliefert. Ein Wert von 0 bedeutet, dass keine passende Zeile gefunden wurde.

Reproduzierbare Werte kann es nur geben, wenn die Texte eindeutig sind und kein Text ein Anfangstext eines vorherigen Textes ist. Beispiel für eine schlechte Reihenfolge:

.text[1] = "kleiner";
.text[2] = "klein";  // ist Anfangstext von .text[1]

Wird dies nicht beachtet, ist der gelieferte Wert für .activeitem von der Vorgeschichte abhängig.

Da ein poptext-Objekt im Normalfall immer einen Text aus der Liste darstellt, kann das Attribut .activeitem nur auf einen Wert zwischen 1 und .itemcount (jeweils inklusive) gesetzt werden. Insbesondere ist eine Setzung auf 0 nicht erlaubt. Wenn ein poptext-Objekt im Ausnahmefall einen nicht in der Liste (.text[I]) enthaltenen Text anzeigen soll muss das Attribut .content dynamisch gesetzt werden (nicht bei Poptext mit .style = poptext).

31.2.3 Positionierung des Textes im Objekt

Unter Microsoft Windows ist das Attribut .xmargin in den Styles edittext und listbox verfügbar, welches den Textabstand vom rechten und linken Rand des Objektes bestimmt. Allerdings kann bei überlangen Texten (auch abhängig vom MS Windows Patchlevel) unter Umständen der Abstand zum rechten Rand ignoriert werden.

31.2.4 Hinweise zum Attribut .hinttext

Dieses Attribut wird nur von Windows und Qt unterstützt. Am poptext-Objekt muss muss dabei der Style edittext gesetzt sein.

Unter Windows wird .hinttext darüberhinaus unterstützt, wenn das Attribut .style den Wert listbox besitzt.

31.3 Anmerkungen für Dialog Manager mit Microsoft Windows

31.4 Anmerkungen für Dialog Manager unter Motif

31.5 Beispiel

window PoptextDemo

{

  .active false;

  .title "PoptextDemo";

 

  child poptext Poptext

  {

    .xleft 5;

    .ytop 1;

    .text[1] "Eintrag 1";

    .text[2] "Eintrag 2";

    .text[3] "Eintrag 3";

    .text[4] "Eintrag 4";

    .activeitem 1;

    .showitem 4;

  }

 

  child poptext Combox

  {

    .xleft 20;

    .ytop 1;

    .text[1] "Combo 1";

    .text[2] "Combo 2";

    .text[3] "Combo 3";

    .text[4] "Combo 4";

    .activeitem 1;

    .style edittext;

    .showitem 4;

  }

 

  child poptext Listbox

  {

    .xleft 34;

    .ytop 1;

    .height 5;

    .text[1] "Liste 1";

    .text[2] "Liste 2";

    .text[3] "Liste 3";

    .text[4] "Liste 4";

    .text[5] "Liste 5";

    .text[6] "Liste 6";

    .text[7] "Liste 7";

    .text[8] "Liste 8";

    .activeitem 1;

    .style listbox;

  }

}

Abbildung 16-32: Fenster mit den verschiedenen Ausprägungen der Combobox