Шаг 5.4 - Создание взаимосвязанной с деревом таблицы подчиненных разделов классификатора.
На закладке компонентов VisualLoodsman выберите компонент TVLTableView и установите его на форму под шторкой btnspl. Указанный компонент предназначен для отображения таблицы объектов базы данных, связанных с головным объектом компонента указанной связью. Настройте некоторые свойства указанного компонента в инспекторе свойств следующим образом:
TVLTableView.
Свойство |
Значение |
Комментарий |
Align |
alClient |
Выравнивание на всю оставшуюся клиентскую чать формы. |
BDDCOM |
|
Указатель на DCOM соединение с базой данных системы ЛОЦМАН:PLM. Оставить не заполненным, будет заполнено программным путем. |
Filter |
|
Строка-фильтр просмотра подчиненных объектов дерева. Оставить незаполненной. |
InBDID |
0 |
Целочисленный идентификатор объекта базы данных, который является головным для данного компонента. От данного объекта по указанной связи будет строится таблица объектов компонента при его инициализации. Оставить равным нулю, будет заполнено программным путем. |
IndexFieldNames |
|
Список атрибутов объектов, по которым будут сортироваться подчиненные объекты при просмотре таблицы. Оставить не заполненным. Сортировка будет производится по умолчанию. |
LinkName |
Состоит из ... |
Наименование связи, по которой будут отображаться объекты таблицы. |
Name |
vltv |
Имя компонента в приложении. |
ParentTreeView |
vltrv |
Указатель на компонент TVLTreeView, с которым связан данный компонент инициализирующей (регенерирующей) связью. При внесении изменения в таблицу объектов будет автоматически регенерироваться текущая ветка дерева объектов компонента vltrv. |
VLAutoLoad |
False |
Параметр автозагрузки (автоинициализации) компонента. Выключить параметр. Таблица будет инициализирована программным путем в пользовательской процедуре. |
Шаг 5.5 - Настройка процедуры инициализации подчиненной таблицы.
Теперь настроим процедуру инициализации данного компонента. Встанем в форме на компонент vltrv (TVLTreeView), перейдем в инспекторе объектов на закладку Events. Создадим событие OnChange, в процедуре данного события пропишем следующие строки:
procedure TfmLibOKP.vltrvChange(Sender: TObject; Node: TTreeNode);
begin
inherited;
Self.vltv.InBDID:=Self.vltrv.GetId;
// получить идентификатор выделенного объекта в дереве
// и передать его в компонент таблицы
Self.vltv.BDDCOM:=Self.vltrv.BDDCOM;
// передать текущий указатель на DCOM-соединение в комопонент таблицы
Self.vltv.RefreshControl;
// регенерировать таблицу
end;
Скомпилируйте проект, загрузите приложение и проверьте пункт главного меню "Классификатор ОКП". На экран должна загрузиться форма, как показано на рисунке 5.3.
Рис. 5.3
Установленная на форму таблица vltv является подчиненной по регенерации дереву объектов vltrv. Регенерация таблицы производится при изменении текущего объекта в дереве. В таблице всегда показывается список объектов, подчиненных текущему объекту в дереве по указанной связи. Такая двойка компонентов часто используется в экранных формах. Остается только настроить отображение колонок таблицы.
Продолжение...