Реализация стандартных интерфейсов
Сначала необходимо создать новый проект — компонент, который будет реализовывать визуальную часть карточки. Расширения Windows-клиента также являются специальными компонентами карточек.
Такой компонент делается на основе класса NavExtension, унаследованного от класса CardControl. Компонент получает все события CardControl и в некоторых случаях может быть использован в том числе и для отображения пользовательского интерфейса карточки.
Проект должен иметь тип "Windows Forms Control Library":
-
DocsVision.Platform.WinForms.dll— содержит интерфейс для взаимодействия с контейнером карточек (средой, в которой запускаются и работают компоненты карточек), а также элементы управления Docsvision для карточек в среде WinForms.Вместо
DocsVision.Platform.WinForms.dll, можно использовать библиотекуDocsVision.Platform.WPF.dll— она позволяет разрабатывать карточки по технологии Windows Presentation Foundation (WPF). При этом основные принципы разработки и интерфейсы остаются точно такими же, как и в случае WinForms. -
DocsVision.Platform.ObjectManager.dll— библиотека менеджера объектов. В этой библиотеке определены основные интерфейсы для взаимодействия с сервером и другими объектами системы (API).
Следует подключить пространства имён этих сборок в область видимости текущего проекта при помощи директивы using:
using DocsVision.Platform.WinForms;
using DocsVision.Platform.ObjectManager;
Чтобы карточка могла быть использована совместно с другими компонентами платформы, её программный компонент должен реализовывать набор предопределённых интерфейсов, которые уже реализованы в специальном классе DocsVision.Platform.WinForms.CardControl. Все что остается сделать — это унаследовать основной класс своей карточки от базового класса CardControl вместо стандартного UserControl:
public sealed partial class TestCard : CardControl
{
}
-
CardData— объект данных текущей карточки. -
CardHost— объект контейнера карточек. -
Session— текущая сессия пользователя (точка входа к остальным объектам API).
-
FolderID— идентификатор папки, из которой открыта карточка. -
ShortcutID— идентификатор ярлыка, из которого открыта карточка. -
ModeID— идентификатор текущего режима карточки.
Готовый код компонента карточки может выглядеть следующим образом (такая карточка будет создаваться и активироваться, но не несет в себе никакой полезной функциональности):
using System;
using System.Windows.Forms;
using DocsVision.Platform.ObjectManager;
using DocsVision.Platform.WinForms;
namespace DocsVision.Test
{
public sealed partial class TestCard : CardControl
{
public TestCard()
{
InitializeComponent();
}
}
}
Чтобы карточка поддерживала механизм настройки разметок через справочник "Конструктор разметок", а также обладала дополнительной встроенной функциональностью (работа с бизнес-процессами, переходы по автомату состояний) следует унаследовать класс не от CardControl, а от BaseCardControl, входящей в сборку DocsVision.BackOffice.WinForms.dll. Данная сборка входит в клиентский инсталляционный пакет Docsvision и является одним из компонентов библиотеки карточек "Базовые объекты".
|
Для разработки на основе |
BaseCardControl в свою очередь унаследован от CardControl, поэтому все вышеуказанные свойства также будут доступны. Кроме того, в такой карточке автоматически можно использовать элементы объектной модели:
-
BaseObject— базовый объект карточки, предоставляющий доступ к её основным свойствам. -
ObjectContext— контекст объектов, позволяющий работать с другими объектами системы. -
Набор сервисов для использования функциональности существующих карточек (каждый сервис также доступен через
ObjectContext)
BaseCardControl и Конструктора разметок, требует изменения:[ComVisible(true)]
[Guid("E41A2D89-300A-4649-AAA7-39634E72FD91")]
[ClassInterface(ClassInterfaceType.None)]
[Customizable(true)] (1)
[CardFrameWindowType(typeof(CardFrameForm))]
public partial class SampleCardClass : DocsVision.BackOffice.WinForms.BaseCardControl
{
public SampleCardClass() (2)
{
if (IsInDesignMode())
{
InitializeComponent();
}
}
protected override void OnCardInitialized(EventArgs e) (3)
{
base.OnCardInitialized(e);
InitializeComponent();
}
}
| 1 | Разрешает настраивать карточку, в т.ч. в "Конструкторе разметок". |
| 2 | Для отображения элементов управления, определённых в коде, в Конструкторе разметок, необходимо изменить конструктор класса. |
| 3 | Для работы с разметками карточки, инициализация должна быть осуществлена не в конструкторе, а в методе OnCardInitialized. |
[ComVisible(true)]
[Guid("E41A2D89-300A-4649-AAA7-39634E72FD91")]
[ClassInterface(ClassInterfaceType.None)]
[CardFrameWindowType(typeof(CardFrameForm))]
public partial class SampleCardClass : DocsVision.BackOffice.WinForms.BaseCardControl
{
protected override void OnCardInitialized(EventArgs e)
{
base.OnCardInitialized(e);
InitializeComponent();
}
}