You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.6 KiB

#define _CRT_SECURE_NO_WARNINGS
#include "epm_handler_common.h"
int connor_set_prop_value(void * returnValue) {
int ifail = ITK_ok;
int count = 0;
tag_t *items = NULL;
char * propname = NULL;
char * propvalue = NULL;
USERARG_get_tag_array_argument(&count, &items);
USERARG_get_string_argument(&propname);
USERARG_get_string_argument(&propvalue);
POM_AM__set_application_bypass(true);
for (int i = 0; i < count; i++)
{
tag_t type = NULLTAG, item_type = NULLTAG;
logical isok = FALSE;
char * object_type = NULL, *class_id = NULL;
tag_t attr_id = NULLTAG, class_tag = NULLTAG, tag_instance = NULLTAG;
ITKCALL(TCTYPE_ask_object_type(items[i], &type));
ITKCALL(TCTYPE_find_type("Form", "", &item_type));
ITKCALL(TCTYPE_is_type_of(type, item_type, &isok));
if (isok)
{
printf("是表单类型获得存储类对象\n");
//ITKCALL(FORM_ask_pom_instance(items[i], &tag_instance));
}
else
{
tag_instance = items[i];
}
ITKCALL(AOM_lock(tag_instance));
ITKCALL(ifail = POM_class_of_instance(tag_instance, &class_tag));
ITKCALL(ifail = POM_name_of_class(class_tag, &class_id));
printf("对象类型:%s\n", class_id);
ITKCALL(ifail = POM_attr_id_of_attr(propname, class_id, &attr_id));
ITKCALL(POM_refresh_instances_any_class(1, &tag_instance, POM_modify_lock));
ITKCALL(POM_set_attr_string(1, &tag_instance, attr_id, propvalue));
ITKCALL(POM_save_instances(1, &tag_instance, true));
ITKCALL(AOM_unlock(tag_instance));
DOFREE(object_type);
DOFREE(class_id);
}
POM_AM__set_application_bypass(false);
DOFREE(propname);
DOFREE(propvalue);
return ITK_ok;
}