IMetabaseCustomObject.CustomClass

Синтаксис Fore

CustomClass: IMetabaseCustomClass;

Синтаксис Fore.NET

CustomClass: Prognoz.Platform.Interop.Metabase.IMetabaseCustomClass;

Описание

Свойство CustomClass определяет пользовательский класс объекта.

Комментарии

Для определения контейнера пользовательского класса используйте свойство IMetabaseCustomObject.Extender.

Пример Fore

Для выполнения примера предполагается наличие в репозитории объекта «Ресурсы» с идентификатором «OBJ_RES». В файловой системе должны присутствовать две пиктограммы: «C:\Icon_small.ico» и «C:\Icon_large.ico».

Добавьте ссылки на системные сборки «Metabase», «Drawing», «Io».

Sub UserProc;
Var
    Mb: IMetabase;
    Object: IMetabaseObject;
    CustomClassExtender: IMetabaseCustomExtender;
    CustClasses: IMetabaseCustomClasses;
    CustomClass: IMetabaseCustomClass;
    Operations: IMetabaseCustomClassOperations;
    Operation: IMetabaseCustomClassOperation;
    CreateInfo: IMetabaseObjectCreateInfo;
    Description: IMetabaseObjectDescriptor;
    ImgList, ImgList32: IGxImageList;
    Icon: IGxIcon;
    CustomObject: IMetabaseCustomObject;
Begin
    Mb := MetabaseClass.Active;
    
// Создание контейнера пользовательских классов
    CreateInfo := Mb.CreateCreateInfo;
    CreateInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUSTOM_EXTENDER;
    CreateInfo.Name := 
"CUSTOM_EXTENDER";
    CreateInfo.Permanent := 
True;
    CreateInfo.Parent := Mb.Root;
    Description := Mb.CreateObject(CreateInfo);
    Object := Description.Edit;
    CustomClassExtender := Object 
As IMetabaseCustomExtender;
    ImgList := 
New GxImageList.Create;
    ImgList.Height := 
16;
    Icon := 
New GxIcon.CreateFromFile("C:\Icon_small.ico");
    ImgList.AddIcon(Icon);
    CustomClassExtender.SmallImages := ImgList;
    ImgList32 := 
New GxImageList.Create;
    ImgList32.Height := 
32;
    Icon := 
New GxIcon.CreateFromFile("C:\Icon_large.ico");
    ImgList32.AddIcon(Icon);
    CustomClassExtender.LargeImages := ImgList32;
    CustomClassExtender.IsShared := 
True;
    CustomClassExtender.Resource := Mb.ItemById(
"OBJ_RES").Bind As IResourceObject;
    CustomClassExtender.NameResource := 
"ID_CUSTOM_EXTENDER";
    
// Добавление пользовательского класса в контейнер
    CustClasses := CustomClassExtender.Classes;
    CustomClass := CustClasses.Add;
    CustomClass.Description := 
"Собственный класс";
    CustomClass.ImageIndex := 
0;
    Operations := CustomClass.Operations;
    Operation := Operations.Add(
0);
    Operation.Name := 
"Новый метод";
    Object.Save;
    
// Создание объекта пользовательского класса
    CreateInfo.ClassId := CustomClass.ClassId;
    CreateInfo.Name := 
"Объект собственного класса";
    CreateInfo.Permanent := 
True;
    CreateInfo.Parent := Mb.Root;
    Description := Mb.CreateObject(CreateInfo);
    Object := Description.Edit;
    CustomObject := Object 
As IMetabaseCustomObject;
    CustomObject.Extender := CustomClassExtender;
    CustomObject.CustomClass := CustomClass;
    Object.Save;
End Sub UserProc;

После выполнения примера будет создан контейнер пользовательских классов, содержащий один класс. В репозитории будет создан объект данного класса.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.ForeIO;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    Object: IMetabaseObject;
    CustomClassExtender: IMetabaseCustomExtender;
    CustClasses: IMetabaseCustomClasses;
    CustomClass: IMetabaseCustomClass;
    Operations: IMetabaseCustomClassOperations;
    Operation: IMetabaseCustomClassOperation;
    CreateInfo: IMetabaseObjectCreateInfo;
    Description: IMetabaseObjectDescriptor;
    ImgList, ImgList32: GxImageList;
    Icon: IGxIcon;
    CustomObject: IMetabaseCustomObject;
Begin
    Mb := Params.Metabase;
    // Создание контейнера пользовательских классов
    CreateInfo := Mb.CreateCreateInfo();
    CreateInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUSTOM_EXTENDER As integer;
    CreateInfo.Name := "CUSTOM_EXTENDER";
    CreateInfo.Permanent := True;
    CreateInfo.Parent := Mb.Root;
    Description := Mb.CreateObject(CreateInfo);
    Object := Description.Edit();
    CustomClassExtender := Object As IMetabaseCustomExtender;
    ImgList := New GxImageList.Create();
    ImgList.Height := 16;
    Icon := New GxIcon.Create();
    Icon.CreateFromFile("C:\temp\CustomClass_ico\Icon_small.ico");
    ImgList.AddIcon(Icon);
    CustomClassExtender.SmallImages := ImgList;
    ImgList32 := New GxImageList.Create();
    ImgList32.Height := 32;
    Icon := New GxIcon.Create();
    Icon.CreateFromFile("C:\temp\CustomClass_ico\Icon_large.ico");
    ImgList32.AddIcon(Icon);
    CustomClassExtender.LargeImages := ImgList32;
    CustomClassExtender.IsShared := True;
    CustomClassExtender.Resource := Mb.ItemById["OBJ_RES"].Bind() As IResourceObject;
    CustomClassExtender.NameResource := "ID_CUSTOM_EXTENDER";
    // Добавление пользовательского класса в контейнер
    CustClasses := CustomClassExtender.Classes;
    CustomClass := CustClasses.Add();
    CustomClass.Description := "Собственный класс";
    CustomClass.ImageIndex := 0;
    Operations := CustomClass.Operations;
    Operation := Operations.Add(0);
    Operation.Name := "Новый метод";
    Object.Save();
    // Создание объекта пользовательского класса
    CreateInfo.ClassId := CustomClass.ClassId;
    CreateInfo.Name := "Объект собственного класса";
    CreateInfo.Permanent := True;
    CreateInfo.Parent := Mb.Root;
    Description := Mb.CreateObject(CreateInfo);
    Object := Description.Edit();
    CustomObject := Object As IMetabaseCustomObject;
    CustomObject.Extender := CustomClassExtender;
    CustomObject.CustomClass := CustomClass;
    Object.Save();
End Sub;

См. также:

IMetabaseCustomObject