3.66 DM_SetValue
Mit Hilfe dieser Funktion werden Sie in die Lage versetzt, Attribute von DM-Objekten zu verändern.
Die dabei zulässigen Attribute für den jeweiligen Objekttyp entnehmen Sie bitte der „Objektreferenz“.
DM_Boolean DML_default DM_EXPORT DM_SetValue
(
DM_ID objectID,
DM_Attribute attr,
DM_UInt index,
DM_Value *data,
DM_Options options
)
Parameter
-> DM_ID objectID
Dieser Parameter beschreibt das Objekt, dessen Attribut Sie ändern möchten.
-> DM_Attribute attr
Dieser Parameter beschreibt das Objektattribut, das Sie ändern möchten. Alle zugelassenen Attribute sind in der Datei IDMuser.h definiert.
-> DM_UInt index
Dieser Parameter wird nur bei Vektorattributen von Objekten ausgewertet und beschreibt den Index des gesuchten Unterobjekts (z.B. Text in Listbox).
-> DM_Value*data
In diesem Parameter wird der Wert übergeben, den das Attribut annehmen soll. Dabei müssen Sie unbedingt beachten, dass Sie das richtige Element in dieser Union belegen. Den Datentyp eines jeden Attributes entnehmen Sie bitte der „Attributreferenz“.
-> DM_Options options
Über diesen Parameter wird gesteuert, ob der Dialog Manager durch das erfolgreiche Setzen des Attributes die Regelbearbeitung auslösen soll oder nicht.
Option |
Bedeutung |
---|---|
Diese Option bedeutet, dass der Funktionsaufruf keine internen Ereignisse auslösen soll. Wenn dieses Flag gesetzt ist, kann vor allem bei vielen Attribut-Änderungen durch die Anwendung viel Performance gewonnen werden. |
|
Diese Option bedeutet, dass der Funktionsaufruf die internen Ereignisse auslösen soll. Dadurch werden Regeln ausgelöst, die für dieses Objekt definiert sind, und auf das Ändern des angegebenen Attributes reagieren. |
|
Diese Option ist gültig bei Attribut AT_options (Objekt Canvas) unter Motif, denn damit wird eine Canvas bezeichnet, die Kinder haben kann. |
|
Diese Option ist gültig bei Attribut AT_options (Objekt Canvas) unter Motif, denn damit wird eine Canvas bezeichnet, die keinen Fokusrahmen haben soll. |
|
Diese Option besagt, dass der angegebene String, bevor er dem Objekt zugewiesen wird, in die aktuell eingestellte Sprache übersetzt werden soll. Dies geht nur, wenn der Text bereits intern vorhanden ist und eine Übersetzung dafür vorliegt. |
Rückgabewert
TRUE |
Das Attribut konnte erfolgreich gesetzt werden. |
FALSE |
Das Attribut konnte nicht gesetzt werden. |
Beispiel
Anwendungs-Callback-Funktion, die überprüft, ob ein eingegebener String einer existierenden Datei entspricht.
DM_Boolean DML_default DM_CALLBACK CheckFilename __1(
(DM_CallBackArgs *, data))
{
DM_Value value; /* structure for DM_SetValue */
FILE *fptr; /* file pointer */
DM_ID id; /* Identifier of object */
/* get the current content */
if (DM_GetValue(data->object, AT_content, 0, &value,
DMF_GetLocalString))
/* check the datatype */
if(value.type == DT_string)
{
/* try to open the file */
if(!((fptr = fopen(value.value.string, "r"))))
{
/*
* the file cannot be opened for reading.
* activate the edittext again
*/
value.type = DT_boolean;
value.value.boolean = TRUE;
DM_SetValue(data->object, AT_active, 0, &value,
DMF_Inhibit);
/*
* The file cannot be read. So don't continue
* processing with the rules
*/
return (FALSE);
}
else
fclose(fptr);
/*
* the file could be opened. enable the other objects
*/
value.type = DT_boolean;
value.value.boolean = TRUE;
/* Get the id of the edittext "Actives" */
if ((id = DM_PathToID(0, "Actives")))
/* Change the object to sensitive */
DM_SetValue(id, AT_sensitive, 0, &value,
DMF_ShipEvent);
/*
* the last parameter must be ShipEvent,
* because a rule should be triggered
*/
/*
* Everything is ok. So let the rule process normally
*/
return(TRUE);
}
/* Too many errors don't continue the rule processing */
return (FALSE);
}
Siehe auch
Eingebaute Funktion setvalue() im Handbuch „Regelsprache“
Methode :set()