3.8 DM_CallMethod
Mit Hilfe dieser Funktion können Sie Methoden der Objekte von der Anwendung aus aufrufen. Dabei wird nicht unterschieden, ob es sich um eine vordefinierte oder eingebaute Methode handelt. Die Belegung der Parameter ist dabei abhängig von der Methode und dem Objekt, bei dem diese Methode aufgerufen werden soll.
Hinweis
Bei Verwendung in Funktionen, welche Records als Parameter enthalten, beachten Sie bitte die Hinweise im Kapitel „Behandlung von String-Parametern“ und das Kapitel „Hinweis bei Verwendung von DM-Funktionen“ im Handbuch „C-Schnittstelle - Grundlagen“.
DM_boolean DML_default DM_EXPORT DM_CallMethod
(
DM_ID object,
DM_Method method,
DM_UInt argc,
DM_Value *argvc,
DM_Value *retval,
DM_Options options
)
Parameter
-> DM_ID object
Dieser Parameter bezeichnet das Objekt, dessen Methode aufgerufen werden soll.
-> DM_Method method
Dieser Parameter bezeichnet die Methode, die bei dem Objekt aufgerufen werden soll. Abhängig von diesem Wert werden die nachfolgenden Parameter dieser Funktion belegt.
-> DM_UInt argc
In diesem Parameter steht die Anzahl der gültigen Methodenparameter.
-> DM_Value *argv
Array von DM_Value-Strukturen, die die von der aufgerufenen Methode gültigen Parameter enthält.
Die Länge dieses Parameters muss unbedingt der beim Parameter argc angegebenen Anzahl entsprechen. Die maximale Länge dieses Arrays ist 16.
<- DM_Value *retval
Pointer auf eine DM_Value-Struktur, die von dieser Funktion als Rückgabewert benutzt wird.
Abhängig von der aufgerufenen Methode wird dabei ein Element in dieser Struktur gesetzt.
-> DM_Options options
Hier können Sie als eine Option DMF_DontFreeLastStrings angeben, um den Speicherplatz der Stringparameter weiter gültig zu halten.
Rückgabewert
TRUE |
Methode wurde erfolgreich ausgeführt. |
FALSE |
Methode wurde nicht erfolgreich ausgeführt. |
Die verfügbaren eingebauten Methoden können Sie der „Methodenreferenz“ entnehmen. Die notwendigen Konstanten für die eingebauten Methoden sind in der IDMuser.h definiert.
Objekte
Beispiel
Entladen eines Tablefields in einer Nachlade-Funktion.
void DM_CALLBACK ContFunc (DM_ContentArgs* args)
{
DM_Value methArgs[2];
DM_Value retval;
DM_Value first, last;
ushort ldStart, ldCount;
ushort visStart;
ldStart = args->loadfirst - args->header;
ldCount = args->loadlast - args->loadfirst + 1;
visStart = args->visfirst - args->header;
if (visStart > 20)
{
/*
* Beim Löschen sind zwei Parameter für die
* Methode anzugeben. Es muss der Start- und der
* Ende-Index angegeben werden, zwischen denen
* gelöscht werden soll. Beide sind vom Datentyp her
* integer.
*/
methArgs[0].type = DT_integer;
methArgs[1].type = DT_integer;
methArgs[0].value.integer = args->header + 1;
methArgs[1].value.integer = visStart - 20;
DM_CallMethod(args->object, MT_clear, 2, methArgs,
&retval, 0);
}
}