TComboBox

Die Klasse TComboBox kapselt spezielle Kombinationsfenster (Combobox).

 

 

TComboBox Teilhierarchie

 

Konstruktor zur direkten Erzeugung

TComboBox(TWindow* parent, int id, int x, int y, int w, int h, uint32 style, uint textLimit, TModule* module = 0);

Parameter Bedeutung
parent Zeiger auf übergeordnetes Fenster.
id Dialogelement ID
x, y Position der oberen linken Ecke relativ zum Ursprung des Clientbereichs.
w Breite
h Höhe
style Eigenschaftskonstante wie CBS_SIMPLE, CBS_DROP-DOWN etc. Alternativ dazu kann der Stil aber auch noch im Konstruktor des übergeordneten Fensters oder im Konstruktor einer abgeleiteten Klasse gesetzt werden. Wenn der Stil nicht im Konstruktor festgelegt wird, muß der Stil in style angegeben werden!
textLimit Textlimit des mit dem Kombinationsfenster verknüpften Editierfeldes.
module Zeiger auf die Modul- oder Anwendungsinstanz. Die Voreinstellung ist 0.

 

Konstruktor zur Erzeugung aus einer Ressource

TComboBox(TWindow* parent, int ResourceId, uint textLen = 0, TModule* module = 0);

Standardattribute

Attr.Style wird auf

WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP | CBS_SORT | CBS_AUTOHSCROLL | WS_VSCROLL | style;

gesetzt. Mir ist etwas schleierhaft, warum Borland diesen Weg gewählt hat. Der meines Erachtens bessere Weg, wäre sicherlich das Vertauschen der Parameter textLimit und style gewesen, um style dann einen Stil vorzugeben, beispielsweise CBS_DROPDOWN. In einer eigenen Klasse kann man dieses Verhalten aber auch noch nachträglich implementieren.

Elementfunktionen

Da TComboBox von TListBox abgeleitet ist, können die Elementfunktionen der Basisklasse ebenfalls verwendet werden. Sehen Sie deshalb auch unter der Beschreibung von TListBox nach.

bool GetDroppedState() const;
Liefert true zurück, wenn ein Listenfeld sichtbar ist oder false wenn das Listenfeld verborgen ist. Der Wert false ist nur für aufklappbare Kombinationsfenster möglich.

int GetEditSel(int &startPos, int &endPos);
Liefert Start- und Endposition des im Editierfeld des Kombinationsfensters selektierten Textes in startPos und endPos. Kommt es zu einem Fehler oder besitzt das Kombinationsfenster kein Editierfeld wird ein negativer Wert (CB_ERR) zurückgegeben.

int GetText(char far* str, int maxChars) const;
Gibt maxChars Zeichen aus dem Editierfeld oder dem statischen Bereich des Kombinationsfensters in str zurück. Der zurückgegebene Wert entspricht der Länge des Textes oder einem negativen Wert, wenn ein Fehler aufgetreten ist.

int GetTextLen() const;
Gibt die Länge des Textes im Editierfeld oder dem statischen Bereich des Kombinationsfensters in zurück oder einen negativen Wert, falls ein Fehler aufgetreten ist.

uint GetTextLimit();
Gibt die maximale Zahl von Zeichen an, die in das Editierfeld des Kombinationsfensters eingegeben werden können.

void HideList();
Die Liste eines Kombinationsfensters wird verborgen.

void ShowList();
Zeigt die Liste eines Kombinationsfensters. Es gibt auch eine weitere Version dieser Funktion, in der angegeben werden kann, ob die Liste gezeigt oder verborgen werden soll. Die Vorgabe ist true. So läßt sich durch einen Aufruf von ShowList(false) wie mit HideList() die Liste des Kombinationsfensters verbergen.

Benachrichtigungsbotschaften

Der Funktionsprototyp für die nachfolgenden Botschaftsmakros ist void Function();

EV_CBN_CLOSEUP(id, Function)
Der Listenteil des Kombinationsfensters wurde verborgen. Diese Benachrichtigungsbotschaft wird nicht an Kombinationsfenster mit dem Stil CBS_SIMPLE gesendet.

EV_CBN_DBLCLK(id, Function)
Der Anwender hat einen Doppelklick auf einen Eintrag ausgeführt. Diese Botschaft betrifft nur Kombinationsfenster des Stils CBS_SIMPLE, da bei Kombinationsfenstern der Stile CBS_DROPDOWN oder CBS_DROPDOWNLIST bei einem einfachen Klick die Liste geschlossen wird.

EV_CBN_DROPDOWN(id, Function)
Eine Drop-Down-Liste wurde aktiviert. Nur von Bedeutung für Kombinationsfenster der Stile CBS_DROPDOWN oder CBS_DROPDOWNLIST.

EV_CBN_EDITCHANGE(id, Function)
Der Anwender hat Text im Editierfeld des Kombinationsfensters verändert. Hat das Kombinationsfenster den Stil CBS_DROPDOWNLIST, wird diese Benachrichtigungsbotschaft nicht versendet.

EV_CBN_EDITUPDATE(id, Function)
Der Anwender hat Text im Editierfeld des Kombinationsfensters verändert und muß neu dargestellt werden. Diese Botschaft wird nach dem Formatieren des Textes aber vor seiner Ausgabe gesendet. Hat das Kombinationsfenster den Stil CBS_DROPDOWNLIST, wird diese Benachrichtigungsbotschaft nicht versendet.

EV_CBN_ERRSPACE(id, Function)
Kein Speicher mehr verfügbar.

EV_CBN_KILLFOCUS(id, Function)
Das Kombinationsfenster hat den Fokus verloren.

EV_CBN_SELCHANGE(id, Function)
Der Anwender hat die Auswahl in der Liste des Kombinationsfensters mit einem Mausklick oder den Richtungstasten geändert.

EV_CBN_SELENDCANCEL(id, Function)
Der Anwender hat einen Eintrag gewählt, dann aber ein anderes Steuerelement ausgewählt oder das (Dialog)fenster geschlossen, wodurch auch die Liste des Kombinationsfensters verborgen wird. Diese Benachrichtigungsbotschaft wird vor CBN_CLOSEUP gesendet, damit die Auswahl des Benutzers ignoriert wird.

Laut Win32 Dokumentation erhält unter Win32 ein Kombinationsfenster des Stils CBS_SIMPLE diese Benachrichtigungsbotschaft nicht!

Wenn das Kombinationsfenster den Stil WS_NOPARENTNOTIFY verwendet, wird CBN_SELENDCANCEL nicht gesendet.

EV_CBN_SELENDOK(id, Function)
Der Anwender hat einen Eintrag gewählt und dann die Returntaste gedrückt oder das Symbol zum Schließen der Liste angeklickt. Diese Benachrichtigung wird vor CBN_CLOSEUP gesendet, damit die Auswahl des Anwenders berücksichtigt wird.

Laut Win32 Dokumentation erhält unter Win32 ein Kombinationsfenster des Stils CBS_SIMPLE diese Benachrichtigungsbotschaft nicht!

Wenn das Kombinationsfenster den Stil WS_NOPARENTNOTIFY verwendet, wird CBN_SELENDOK nicht gesendet.

EV_CBN_SETFOCUS(id, Function)
Das Kombinationsfenster hat den Fokus erhalten.

Beispiel

Ein Beispielprogramm zur Verwendung von TComboBox finden Sie bei der Beschreibung der Klasse TListBox.

Übersicht    

Stand: 15.01.99 15:59:04
© 1998,1999 by Hans Joachim Kiefer, hajokiefer@handshake.de