Динамічне створення елементів формиблог екстрімального програмування, блог екстрімального

Динамічне створення елементів форм, на прикладі оновлюваної сторінки зображень (керовані форми).

Однією із зручних можливостей програмування форм є програмне створення елементів форми, не вдаючись до конструктора форм. І важливою особливістю цього є - програмне зміна типових форм, тим самим полегшуючи оновлення типових конфігурацій.

Створюємо порожню конфігурацію.

Створюємо новий Справочнік.Номенклатура

На вкладці «Дані» додаємо нову табличну частину «ДополнітельниеІзображенія», і колонку «ІмяФайлаІзображенія», тип даних - рядок, необмеженої довжини.

На вкладці «Форми» додаємо нову форму «ФормаЕлемента».

Динамічне створення елементів формиблог екстрімального програмування, блог екстрімального

На форму додамо нову групу «Сторінки». Кнопка Додати (зелен. +), Вибираємо тип елемента «Група - сторінки».

Динамічне створення елементів формиблог екстрімального програмування, блог екстрімального

Ім'я групи (сторінки) залишаємо як «Группа1», далі

Додаємо в цю групу (Группа1) дві сторінки.
Группа2 і Группа3, в поле заголовок для групи 2 - вводимо «Зображення», для
группи3 - «Каталог»

Динамічне створення елементів формиблог екстрімального програмування, блог екстрімального

Тепер переносимо табличну частину «ДополнітельниеІзображенія» в «Группу2»,
і для видимості другої сторінки додали на страніцу2 - «Декорацію - Напис». Має вийти так, як на картинці:

Динамічне створення елементів формиблог екстрімального програмування, блог екстрімального

У властивостях елементу управління «ДополнітельниеІзображеніяІмяФайлаІзображенія» табличній частині встановіть параметр «КнопкаВибора» в значення «ТАК».

Динамічне створення елементів формиблог екстрімального програмування, блог екстрімального

Також у властивостях цього поля задайте Подія «НачалоВибора» для кнопки вибору

Динамічне створення елементів формиблог екстрімального програмування, блог екстрімального

На цьому проектування форми закінчимо і приступимо безпосередньо до написання коду. За кнопці вибору при додаванні нового рядка з зображеннями будемо відкривати діалог вибору файлу і прописувати в імені файлу - шлях до обраного зображенню.

процедура
ДополнітельниеІзображеніяІмяФайлаІзображеніяНачалоВибора (Елемент. ДанниеВибора. СтандартнаяОбработка)


// Вставити вміст обробника.

Режим = РежімДіалогаВибораФайла. відкриття;

ДіалогОткритіяФайла = Новий ДіалогВибораФайла (Режим);

ДіалогОткритіяФайла. ПолноеІмяФайла = «»;

ДіалогОткритіяФайла. Фільтр = Фільтр;

ДіалогОткритіяФайла. МножественнийВибор = Брехня;

ДіалогОткритіяФайла. Тема = «Виберіть файл»;

Якщо ДіалогОткритіяФайла. Вибрати () Тоді

Имяфайла = ДіалогОткритіяФайла. ПолноеІмяФайла;

ТекСтрока = Елементи. ДополнітельниеІзображенія. ТекущіеДанние;

ТекСтрока. ІмяФайлаІзображенія = имяфайла;

В даному випадку ми визначаємо поведінку кнопки вибору - відкриваємо діалог відкриття файлів в якому користувач вибере зображення. Якщо користувач зображення вибрав - то в поточний рядок табличної частини додаємо повний шлях і ім'я файлу з діалогу.

Тепер нам необхідно зробити наступне: якщо користувач вибирає вкладку «Группа3» з заголовком «Каталог» - ми видаляємо всі раніше програмно-створені елементи і на основі табличній частині «Додаткові зображення» додаємо нові елементи управління в яких виводимо картинки.

Робимо це наступним чином: Вибираємо «Группа1», тиснемо на праву кнопку миші для виклику «Властивості». У властивостях групи створюємо нову зумовлену процедуру події «ПріСменеСтраніци» натиснувши на значок «лупи».

Динамічне створення елементів формиблог екстрімального програмування, блог екстрімального

Напишемо наступний код для цієї предпределенной процедури:

Процедура Группа1ПріСменеСтраніци (Елемент.
ТекущаяСтраніца)

Якщо ТекущаяСтраніца. Ім'я = "Группа3" Тоді

// перенаповнений список зображень

Якщо поточна сторінка буде «Группа3», тоді спочатку видаляємо елементи на вкладці «Группа3» і створюємо нові реквізити, давайте подивимося складу процедури

«УдалітьРеквізітиСервер ()» і «ДобавітьДополнітельниеРеквізітиСервер ()».

УдаляемиеРеквізіти = Новий Масив ();

Колві = Реквізити. Кількість ();

Для n = 0 по Колві - 1 Цикл

ТекЕлемент = Реквізити. Отримати (п);

Якщо Серед (ТекЕлемент. Ім'я. 1. 3) = «Рек» Тоді

УдаляемиеРеквізіти. Додати (ТекЕлемент. Ім'я);

ДобавляемиеРеквізіти = Новий Масив;

Для кожного Стрка з Об'єкт. ДополнітельниеІзображенія
Цикл СчетчікК = СчетчікК + 1;

Реквізит = Новий
РеквізітФорми ( «Реквізит» + Рядок (СчетчікК), Новий ОпісаніеТіпов ( «Рядок»). «». Істина);

ДобавляемиеРеквізіти. Додати (Реквізит);

// Додаємо новий перші пів я введення на форму


Для кожного Стрка з Об'єкт. ДополнітельниеІзображенія Цикл

СчетчікК = СчетчікК + 1;

Елемент = ЕтаФорма. Елементи. Додати ( «Реквізит» + Рядок (СчетчікК), Тип ( «ПолеФорми»), ЕтаФорма. Елементи. Группа3);

Елемент. Від = ВідПоляФорми. ПолеКартінкі;

Елемент. ПутьКДанним = "Реквізит" + Рядок (СчетчікК);

Елемент. Тема = «Зображення» + С Троки (СчетчікК) + «(« + Стрка. ІмяФайлаІзображенія + «)»;

Картинка = Новий ДвоічниеДанние (Стрка. ІмяФайлаІзображенія);

ЕтаФорма [ "Реквізит" + Рядок (Счетчікк)] = ПоместітьВоВременноеХраніліще (Картинка. Новий УнікальнийІдентіфікатор);

Отже, що ми маємо?

Розглянемо спочатку процедуру «УдалітьРеквізітиСервер». Спочатку для того щоб видалити реквізити процедурою «ІзменітьРеквізіти» - нам необхідно підготувати масив в якому будуть перераховані всі реквізити підлягають видаленню.

Ми отримуємо все реквізити форми (хоча ми і можемо отримати реквізити сторінки «Каталог») і в циклі перебираємо їх. У разі якщо ім'я реквізиту буде починатися з «Рек», тоді ми такий реквізит додаємо в масив і він підлягає видаленню.

В процедура ДобавітьДополнітельниеРеквізітиСервер () відбувається наступне: В залежності від кількості доданих файлів із зображеннями ми формуємо масив реквізитів до додавання, причому варто відзначити, що для виведення зображень - ми будемо використовувати елемент форми, реквізит якого матиме тип значення - рядок. Імена одержуваних реквізитів будуть такими «Реквізіт1, Реквізіт2», ... «Реквізит N».


Далі процедура ІзменітьРеквізіти) в якій перший параметр - це додаються реквізити, другий видаляються реквізити) - додає нові реквізити.

Далі в циклі ми додаємо нові елементи на форму. Не забуваємо вказувати важливий параметр відображення нашої рядки - ВідПоляФорми. ПолеКартінкі. Шлях до даних - прописуємо щойно створені нами реквізити.


І залишається також завантажити з файлу і вивести на екран наші картинки. У поточному прикладі ми не додаємо їх в нашу інформаційну базу - а зчитуємо їх кожен раз з файлів. Спочатку зчитуємо файл картинки, як двійкові дані, далі поміщаємо дані в тимчасове сховище процедурою ПоместітьВоВременноеХраніліще. тим самим отримуємо рядок.

У підсумку ми отримуємо динамічне створення елементів форми і реквізитів, і в залежності від складу табличній частині - ми виводимо на вкладці «Каталог» зображення.