3.30 DM_GetContent
Mit Hilfe dieser Funktion kann von der Anwendung aus der aktuelle Inhalt des Objekts (Listbox, Poptext oder Tablefield) mit einem einzigen Funktionsaufruf abgefragt werden. Auf diese Art und Weise kann also mit einem Zugriff der aktuelle Zustand (Inhalt und selektierte Einträge) erfragt werden.
DM_Boolean DML_default DM_EXPORT DM_GetContent
(
DM_ID object,
DM_Value *firstindex,
DM_Value *lastindex,
DM_Content **contentvec,
DM_UInt *count,
DM_Options options
)
Parameter
-> DM_ID object
Dieser Parameter bezeichnet das Objekt, dessen Inhalt erfragt werden soll.
-> DM_Value *firstindex
Steuert, welcher Bereich des Inhalts durch diese Funktion erfragt werden soll. In diesem Parameter wird der Startpunkt des Bereichs definiert. Dabei werden bei der Abfrage des Inhalts einer Listbox oder eines Poptexts der Typ in der DM_Value-Struktur auf DT_integer gesetzt und der Integer-Wert in der Union mit dem Startwert belegt. Bei einem Tablefield hingegen wird der Typ in der DM_Value-Struktur auf DT_index gesetzt und der Index-Wert in der Union mit dem Startwert belegt. Hierbei wird in index.first die Zeile, in index.second die Spalte eingetragen.
Anmerkung
Wenn dieser Parameter ein NULL-Pointer ist, hat der Startpunkt folgende Defaults:
integer = 1 |
|
integer = 1 |
|
index.first = 1, index.second = 1 |
|
integer = 1 |
-> DM_Value *lastindex
Über diesem Parameter wird gesteuert, welcher Bereich des Inhalts durch diese Funktion erfragt werden soll. In diesem Parameter wird der Endpunkt des Bereichs definiert. Dabei werden bei der Abfrage des Inhalts einer Listbox oder eines Poptexts der Typ in der DM_Value-Struktur auf DT_integer gesetzt und der Integer-Wert in der Union mit dem Endewert belegt. Bei einem Tablefield hingegen wird der Typ in der DM_Value-Struktur auf DT_index gesetzt und der Index-Wert in der Union mit dem Endewert belegt. Hierbei wird in index.first die Zeile, in index.second die Spalte eingetragen.
Anmerkung
Wenn dieser Parameter ein NULL-Pointer ist, hat der Endpunkt folgende Defaults:
integer = Object.itemcount |
|
integer = Object.itemcount |
|
index.first = object.rowcount, index.second = object.colcount |
|
Integer = Object.itemcount |
<- DM_Content **contentvec
In diesem Pointer wird der Zeiger auf die vom Dialog Manager gefüllte Struktur zurückgegeben. Diese Struktur darf dann auf keinen Fall von der Anwendung verändert werden.
<- DM_UInt *count
In diesem Parameter liefert der Dialog Manager zurück, wie viele Einträge durch die Angabe der Indizes erfasst werden und damit, wie groß die zurückgelieferte Struktur contentvec ist.
-> DM_Options options
Über diesen Parameter wird gesteuert, welche Informationen der Dialog Manager zurückliefern soll. Dabei gibt es die folgenden Möglichkeiten, die auch kombiniert (bitweises "oder") werden dürfen.
Option |
Bedeutung |
---|---|
Diese Option besagt, dass in dem Vektor das Attribut .active nicht mit Werten versorgt werden soll, da sich die Anwendung für dieses Attribut nicht interessiert. |
|
Diese Option besagt, dass in dem Vektor das Attribut .sensitive nicht mit Werten versorgt werden soll. |
|
Diese Option besagt, dass in dem Vektor das Attribut .content nicht mit Werten versorgt werden soll, da sich die Anwendung für dieses Attribut nicht interessiert. Wenn die Strings wirklich nicht benötigt werden, bringt das Setzen dieser Option wesentliche Performanz-Vorteile. |
|
Diese Option besagt, dass in dem Vektor das Attribut .userdata nicht mit Werten versorgt werden soll, da sich die Anwendung für dieses Attribut nicht interessiert. Wenn die Userdata wirklich nicht benötigt werden und das Objekt je Eintrag eine Userdata hat,, bringt das Setzen dieser Option wesentliche Performanz-Vorteile. |
Hinweis
Den Inhaltsvektor, den Sie im Parameter contentvec erhalten, wird vom Dialog Manager allokiert und muss unbedingt über die Funktion DM_FreeContent wieder freigegeben werden.
Beispiel
Abfrage der Zeilen 2 bis 5 in einer Listbox.
void DML_default DM_ENTRY GetContent __1((DM_ID, lb))
{
int i;
DM_Integer count;
DM_Value first, last;
DM_Content *vec;
first.type = DT_integer;
first.value.integer = 2;
last.type = DT_integer;
last.value.integer = 5;
DM_GetContent(lb, &first, &last, &vec, &count, 0);
for (i = 0; i < count; i++)
{
printf("vec[%d].sensitive = %d\n",i, vec[i].sensitive);
printf("vec[%d].active = %d\n",i, vec[i].active);
printf("vec[%d].string = %s\n",i, vec[i].string);
}
DM_FreeContent(vec, 0);
}
Siehe auch
Objekte listbox, poptext, tablefield, treeview