Динамическое создание элементов интерфейса

Добрый день,

Возник такой вопрос - необходимо динамически сформировать несколько закладок (Page) на форме редактирования, по количеству выбранных записей, и на каждой из них - по текстовому полю. Возможно ли такое действие, и не могли бы вы его описать?

Уточню - имею в виду из JScript-а, например, на событие OnPrepare формы открываю запрос, и для каждой записи созданию закладку.

Нравится

4 комментария

Добрый день!

Реализовать вашу задачу можно. Для этого необходимо в скрипте создавать новые компоненты типа Page, и добавлять их к существующему PageControl'у.
Пример кода, выполняющего добавление новой страницы в набор страниц Pages:

var Window = Self;
var ComponentName = 'NewPage';
var NewPage = Window.CreateComponent('Page', ComponentName);
NewPage.Caption = 'NewPage';
Pages.Add(NewPage);

Учтите, что Вам придется генерировать уникальные имена и указывать заголовки для добавляемых страниц.
Аналогично создаются и добавляются TextDataControl'ы на созданные страницы.
Успехов!

Спасибо, Дмитрий!

Все получилось.

Подниму старую тему, так как вопрос близок :)

А удалить компонент как-нибудь можно? Например мне надо при отображении окна-наследника wnd_BaseGridArea из трех настроенных DataGridView оставить только один. Свойства IsVisible у них к сожалению нет...

Добрый день!

Для удаления компонента с известным именем(например, ComponentName) нужно выполнить следующие действия:

var Component = Window.ComponentsByName('ComponentName');
if (Assigned(Component)) {
Window.RemoveComponent(Component);
}

Успехов!

Показать все комментарии