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

Alle verfügbaren 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);

    }

}