IForeObject.SetFieldValue

Синтаксис

SetFieldValue(FieldName: String; Value: Variant; Type: ForeVariantType);

SetFieldValue(FieldName: String; Value: Variant; Type: Prognoz.Platform.Interop.KeFore.ForeVariantType);

Параметры

FieldName. Наименование поля класса.

Value. Значение, которое необходимо задать полю.

Type. Тип устанавливаемого значения.

Описание

Метод SetFieldValue задаёт указанное значение полю класса.

Пример

Для выполнения примера предполагается наличие модуля с идентификатором «MODULE». В модуле добавлен следующий код:

Class A: Object
    
Public a: Integer;
    
Public b: String;
End Class A;

Sub Test(obj: A);
Begin
    Debug.WriteLine(obj.a);
    Debug.WriteLine(obj.b);
End Sub Test;

Добавьте ссылку на системную сборку Fore, Metabase.

Sub UserProc;
Var
    ForeService: IForeServices;
    Runtime: IForeRuntime;
    Assm: IForeAssembly;
    FClass: IForeClass;
    ClassInst: IForeObject;
    FSub: IForeSub;
    Param: IForeSubParam;
Begin
    ForeService := MetabaseClass.Active 
As IForeServices;
    Runtime := ForeService.GetRuntime;
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("MODULE");
    
//Получение класса
    FClass := Assm.BindToClass("A");
    
//Создание экземпляра класса и задание значений его полям
    ClassInst := FClass.CreateObject;
    ClassInst.SetFieldValue(
"FieldA"100, ForeVariantType.Integer);
    ClassInst.SetFieldValue(
"FieldB""Field", ForeVariantType.String);
    
//Получение метода
    FSub := Assm.BindToSub("Test");
    
//Установка значения параметра метода
    Param := FSub.Params.ParamByName("obj");
    Param.Value := ClassInst.Object;
    
//Выполнение метода
    FSub.Invoke;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Fore;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    ForeService: IForeServices;
    Runtime: IForeRuntime;
    Assm: IForeAssembly;
    FClass: IForeClass;
    ClassInst: IForeObject;
    FSub: IForeSub;
    Param: IForeSubParam;
Begin
    ForeService := Params.Metabase 
As IForeServices;
    Runtime := ForeService.GetRuntime();
    
//Загрузка сборки
    Assm := Runtime.BindToAssembly("MODULE");
    
//Получение класса
    FClass := Assm.BindToClass("A");
    
//Создание экземпляра класса и задание значений его полям
    ClassInst := FClass.CreateObject();
    ClassInst.SetFieldValue(
"FieldA"100, ForeVariantType.fvtInteger);
    ClassInst.SetFieldValue(
"FieldB""Field", ForeVariantType.fvtString);
    
//Получение метода
    FSub := Assm.BindToSub("Test");
    
//Установка значения параметра метода
    Param := FSub.Params.ParamByName("obj");
    Param.Value := ClassInst.Object;
    
//Выполнение метода
    FSub.Invoke();
End Sub;

При выполнении примера в среду выполнения будет загружен указанный модуль. Будет создан экземпляр класса и заданы значения его полей. Полученный экземпляр класса будет передан в качестве параметра в метод «Test», после этого метод будет запущен на выполнение.

См. также:

IForeObject