Рассмотрим небольшой пример создания приложения, которое будет использоваться для просмотра содержимого справочника НСИ, а также для добавления в него новых элементов. Для этого в репозитории создадим следующие объекты:
Справочник НСИ с идентификатором T_INFO. Справочник имеет структуру по-умолчанию, в дерево элементов можно добавить какие-либо элементы;
Форма с идентификатором F_SHOW_DICT. На форме необходимо разместить следующие компоненты:
TabSheetBox и UiTabSheet. Для TabSheetBox в инспекторе объектов в свойстве Source указать в качестве источника данных UiTabSheet;
Три кнопки PPButton. Для компонентов в инспекторе объектов в свойстве Text задать следующие наименования: для PPButton1 - «Добавить»; PPButton2 - «Сохранить»; PPButton3 - «Закрыть».
С помощью формы реализуем следующий алгоритм работы:
При открытии формы в таблицу компонента TabSheetBox будем загружать значения различных атрибутов для всех имеющихся в справочнике элементов.
При нажатии на кнопку «Добавить» будет выводиться диалог для ввода наименования нового элемента. После ввода и нажатия кнопки «ОК» будет формироваться список наименований добавляемых элементов. Также наименования сразу будут добавляться в таблицу.
При нажатии на кнопку «Сохранить» на основании информации из сформированного списка в справочник будут добавлены новые элементы.
При нажатии на кнопку «Закрыть» форма закрывается без добавления в справочник новых элементов.
Перед тем, как приступить к реализации алгоритма, выполните ещё ряд настроек. В инспекторе сборок уже отображаются подключенные сборки ExtCtrls и Forms. Необходимо подключить ещё ряд сборок. Для этого дважды щелкните по элементу «Ссылки» и установите флажки напротив сборок Collections, Drawing, Metabase, Rds, Tab и Ui. Ресурсы данных сборок потребуются при разработке кода. Также в коде формы необходимо добавить ряд переменных:
Class F_SHOW_DICTForm: Form
PPButton1: PPButton;
PPButton2: PPButton;
PPButton3: PPButton;
TabSheetBox1: TabSheetBox;
UiTabSheet1: UiTabSheet;
Mb: IMetabase; //Контекст репозитория
RdsDict: IRdsDictionaryInstance; //Открытый экземпляр справочника
TSheet: ITabSheet; //Таблица визуального компонента
NewElementsName: IStringList; //Список для хранения наименований новых элементов
ElementCount, NameAttrIndex: Integer; //Количество элементов и индекс атрибута Наименование
//...
End Class F_SHOW_DICTForm;
Рассмотрим по шагам реализацию отдельных пунктов алгоритма.
3. Сохранение элементов в справочник
4. Закрытие формы без сохранения
Если всё выполнено корректно, то после запуска и добавления нескольких элементов форма будет выглядеть следующим образом: