Это
control-шаблон, который реализует кнопку
копирования текущей записи в новую запись. Не
понимаю, почему TopSpeed не сделала эту кнопку в
стандартных шаблонах?
#!=================================================================================
#CONTROL (Button_Copy, 'Кнопка Копирования записи')
CONTROLS
BUTTON,AT(,,16,16),MSG('Копировать в новую запись'),
TIP('Копировать'), USE(?Copy), ICON('COPY_REC.ICO')
END
#!=================================================================================
#DISPLAY ('')
#DISPLAY ('Кнопка Копирования текущей записи')
#DISPLAY ('')
#!
#ATSTART
#DECLARE (%ButtonCopy)
#FOR (%Control), WHERE(%ControlInstance = %ActiveTemplateInstance)
#SET (%ButtonCopy, %Control)
#ENDFOR
#ENDAT
#!
#! ------ После нажатия кнопки ------
#AT (%ControlPostEventHandling, '?Copy', 'Accepted')
#EMBED(%BrowseBeforeCopy,'Browse Box, Before Copy'), %ActiveTemplateInstance,
MAP(%ActiveTemplateInstance, %ActivetemplateInstanceDescription)
LocalRequest = InsertRecord
do BRW1::CallUpdate
if GlobalResponse = RequestCompleted
BRW1::LocateMode = LocateOnEdit
do BRW1::LocateRecord
else
BRW1::RefreshMode = RefreshOnQueue
do BRW1::RefreshPage
.
do BRW1::InitializeBrowse
do BRW1::PostNewSelection
select(?Browse:1)
LocalRequest = OriginalRequest
LocalResponse = RequestCancelled
do RefreshWindow
#ENDAT
В embed вставку 'Browse Box, Before Copy' удобно
вставлять код, инициализирующий некоторые поля
новой записи.
Кнопка работает только с первым browse box-ом в окне (с именем ?Browse:1). Я думаю, это не является существенным ограничением, а писать более универсальный код лень....