How-to: Создание на основе
Пример 1
Условие
Есть книга, для которой заданы наименование и цена. Для книги заданы формы просмотра и редактирования.
CLASS Book 'Книга';
name 'Наименование' = DATA ISTRING[50] (Book) IN id;
price 'Цена' = DATA NUMERIC[14,2] (Book);
FORM book 'Книга'
OBJECTS b = Book PANEL
PROPERTIES(b) name, price
EDIT Book OBJECT b
;
FORM books 'Книги'
OBJECTS b = Book
PROPERTIES(b) READONLY name, price
PROPERTIES(b) NEWSESSION NEW, EDIT, DELETE
;
Нужно сделать кнопку, которая на основе текущей книги создаст новую и откроет форму по ее редактированию.
Решение
copy 'Копировать' (Book book) {
NEWSESSION {
NEW newBook = Book {
name(newBook) <- name(book);
price(newBook) <- price(book);
SHOW book OBJECTS b = newBook DOCKED;
}
}
}
EXTEND FORM books
PROPERTIES(b) copy TOOLBAR
;
При нажатии кнопки будет создана новая сессия изменений, в которой создастся книга и будет работать новая форма. Если пользователь закроет форму без сохранения, то новая книга не будет сохранена в базу данных и будет потеряна. Слово TOOLBAR
указывает на то, что эту кнопку надо отображать в тулбаре таблицы со списком заказов.