Добавление элемента в форму при нажатии на кнопку Terrasoft
Добрый день.
Подскажите, пожалуйста, есть задача в Terrasoft при нажатии на кнопку создавать массив элементов edit и label с названиями и именами. Плюс, нужно еще edit присвоить событие onchange.
Нравится
Задачу решил так :
function PacientEmailForm(Window) {
//Создание дополнительных компонентов для вывода массива данных для пациентов
try {
var PacientLabel = null;
var PacientName = null;
var PacientDate = null;
var PacientTest = null;
var PacientText = null;
var PacientNumber = 0;
for (var i = 0; i < 2; i++) {
//Создание метки для структуризации компонентов - ЗАГОЛОВОК
PacientLabel = EmailFormWindowValue.CreateComponent('Label','lbPacient'+i);
fgPacient.Add(PacientLabel);
PacientLabel.AlignHorizontal = alhCenter;
PacientLabel.AutoSize = true;
PacientNumber = i+1;
PacientLabel.Caption = 'Пациент № '+PacientNumber;
//Создание поля вывода для имени пациента
PacientName = EmailFormWindowValue.CreateComponent('Edit','edtPacientName'+i);
fgPacient.Add(PacientName);
PacientName.AlignHorizontal = alhClient;
PacientName.Caption = 'ФИО';
//Создание поля вывода для даты рождения пациента
PacientDate = EmailFormWindowValue.CreateComponent('Edit','edtPacientDate'+i);
fgPacient.Add(PacientDate);
PacientDate.AlignHorizontal = alhClient;
PacientDate.EditMask = '99.99.9999';
PacientDate.Caption = 'Дата рождения';
//Создание поля вывода для тестов
PacientTest = EmailFormWindowValue.CreateComponent('Edit','edtPacientTest'+i);
fgPacient.Add(PacientTest);
PacientTest.AlignHorizontal = alhClient;
PacientTest.Caption = 'Тесты и услуги';
//Создание поля вывода для инвалидности
PacientText = EmailFormWindowValue.CreateComponent('Edit','edtPacientText'+i);
fgPacient.Add(PacientText);
PacientText.AlignHorizontal = alhClient;
PacientText.Caption = 'Инвалидности';
//Скрыть все элементы и использовать по надобности
PacientLabel.isVisible = false;
PacientName.isVisible = false;
PacientDate.isVisible = false;
PacientTest.isVisible = false;
PacientText.isVisible = false;
}
//var Pacient = Window.CreateComponent('Label','PacientLabel');
//fgPacient.Add(Pacient);
//Pacient.Caption = 'Проверка!';
} catch(E) {
Log.Write(mdtError, '[PacientEmailForm] ' + E.message+' ['+E.number+']');
} finally {}
}
Задачу решил так :
function PacientEmailForm(Window) {
//Создание дополнительных компонентов для вывода массива данных для пациентов
try {
var PacientLabel = null;
var PacientName = null;
var PacientDate = null;
var PacientTest = null;
var PacientText = null;
var PacientNumber = 0;
for (var i = 0; i < 2; i++) {
//Создание метки для структуризации компонентов - ЗАГОЛОВОК
PacientLabel = EmailFormWindowValue.CreateComponent('Label','lbPacient'+i);
fgPacient.Add(PacientLabel);
PacientLabel.AlignHorizontal = alhCenter;
PacientLabel.AutoSize = true;
PacientNumber = i+1;
PacientLabel.Caption = 'Пациент № '+PacientNumber;
//Создание поля вывода для имени пациента
PacientName = EmailFormWindowValue.CreateComponent('Edit','edtPacientName'+i);
fgPacient.Add(PacientName);
PacientName.AlignHorizontal = alhClient;
PacientName.Caption = 'ФИО';
//Создание поля вывода для даты рождения пациента
PacientDate = EmailFormWindowValue.CreateComponent('Edit','edtPacientDate'+i);
fgPacient.Add(PacientDate);
PacientDate.AlignHorizontal = alhClient;
PacientDate.EditMask = '99.99.9999';
PacientDate.Caption = 'Дата рождения';
//Создание поля вывода для тестов
PacientTest = EmailFormWindowValue.CreateComponent('Edit','edtPacientTest'+i);
fgPacient.Add(PacientTest);
PacientTest.AlignHorizontal = alhClient;
PacientTest.Caption = 'Тесты и услуги';
//Создание поля вывода для инвалидности
PacientText = EmailFormWindowValue.CreateComponent('Edit','edtPacientText'+i);
fgPacient.Add(PacientText);
PacientText.AlignHorizontal = alhClient;
PacientText.Caption = 'Инвалидности';
//Скрыть все элементы и использовать по надобности
PacientLabel.isVisible = false;
PacientName.isVisible = false;
PacientDate.isVisible = false;
PacientTest.isVisible = false;
PacientText.isVisible = false;
}
//var Pacient = Window.CreateComponent('Label','PacientLabel');
//fgPacient.Add(Pacient);
//Pacient.Caption = 'Проверка!';
} catch(E) {
Log.Write(mdtError, '[PacientEmailForm] ' + E.message+' ['+E.number+']');
} finally {}
}
Теперь возник вопрос, как удалить элемент созданный таким образом?
Алексей, если добавляли при помощи CreateComponent, то удалить, соответственно, можно по RemoveComponent. См. примеры в теме.
Зверев Александр,
Спасибо. Так и сделал. Правда со 2 попытки. Первая была DeleteComponent. А не подскажете, как событие присвоить Edit
.OnChange ?
Присваивают обработчики так, см. src_Main:
var MenuItem = Window.CreateComponent('ActionMenuItem', Name); MenuItem.Caption = CaptionDataField.ValAsStr; MenuItem.Tag = ParentIDDataField.ValAsStr; SetObjectEventDispatcher(Window, MenuItem, MenuItem.Name, 'OnExecute', 'DictionaryMenuItemOnExecute');
Если компонентов будет произвольное количество, можно обработчик сделать один и тот же, а в нём считывать значение свойства Tag, которое перед этим присвоить каждому разное.