Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VisualFoxPro.doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

2.5.3.3. Обработчики событий формы и ее элементов

Обработчик события Init выполняется, когда открывается форма после создания объекта класса Form.

&& Обработчик события Init формы "Авторы"

&&

parameters рAuthorId

&&

with This

.AutoCenter = .T. && Центрируем форму при ее открытии

.Grid1.ReadOnly = .T. && Сетка формы доступна только для чтения

&& Упорядочиваем записи по полю Author

.DataEnvironment.Cursor1.Order = 'Author'

if Pcount( ) = 1 then

set deleted on && Скрываем записи с пометкой удаления

.WindowType = 1 && Открываем форму модально

.Caption = "Выбор автора книги " + Books.Book

.Command7.Visible = .T. && Кнопка "Выбрать" видна

.AuthorSelected = .F. && Инициализация возвращаемого значения

if рAuthorId > 0 then

seek рAuthorId order tag AuthorId in Authors

endif

else

set deleted off && Показываем записи с пометкой удаления

.WindowType = 0

.Caption = "Авторы" && Заголовок формы

.Command7.Visible = .F. && Кнопка "Выбрать" скрыта

endif

endWith

Форма "Авторы", если вызывается из формы "Книги", получает код автора, выбранного в форме "Книги". Этот код принимает параметр рAuthorId. На записи с этим кодом после открытия формы позиционируется таблица Authors. При выборе автора для формы "Книги" записи таблицы Authors, имеющие пометку удаления, недоступны.

Вызов формы "Авторы" из формы "Книги" выполняется командой

do form (formName) with рAuthorId to AuthorSelected

Параметр AuthorSelected команды DO FORM принимает значение, возвращаемое формой "Авторы" после ее закрытия. Это значение содержит команда RETURN обработчика события Unload формы "Авторы":

return This.AuthorSelected

Других операторов этот обработчик не содержит.

Сетка формы (ее свойство TabIndex равно 1, то есть она оказывается в фокусе при открытии формы) имеет один обработчик – AfterRowColChange, управляющий доступностью кнопки "Изменить" (Command2) и заголовком кнопки Command3:

&& Обработчик события AfterRowColChange сетки Grid1 формы "Авторы"

&&

lparameters nColIndex

with ThisForm

if Deleted( ) then

&& Запись таблицы Authors имеет пометку удаления; запрещаем

&& ее редактирование, делая кнопку "Изменить" неактивной

.Command2.Enabled = .F.

.Command3.Caption = "Возвратить"

else

.Command2.Enabled = .T.

.Command3.Caption = "Удалить"

endif

endWith

В первой, заданной по умолчанию строке обработчика nColIndex – это номер выбранного столбца сетки.

Замечание. Memo-поле записи сетки открывается после позиционирования на этом поле и нажатия на Ctrl+PgDn или на после двойного удара мышью. Оно, как и вся сетка, доступно только для чтения.

Представление записей таблицы Authors может быть выполнено в порядке фамилий авторов или их кодов. Этим управляет обработчик события InteractiveChange переключателя OptionGroup1:

&& Обработчик события InteractiveChange переключателя OptionGroup1

&&

if This.Value = 1 then

ThisForm.DataEnvironment.Cursor1.Order = 'Author'

else

ThisForm.DataEnvironment.Cursor1.Order = 'AuthorId'

endif

ThisForm.Grid1.Refresh && Отображаем изменение порядка

При открытии формы записи сетки упорядочиваются по ее столбцу "Авторы".

Поиск автора можно выполнить, вводя начальные буквы фамилии автора в поле ввода Au, расположенном над списком авторов. Поиск выполняется обработчиком InteractiveChange этого поля:

&& Обработчик события InteractiveChange поля Au

&&

recOld = Recno( )

if not Empty(This.Value)

set exact off

if not Seek(AllTrim(This.Value), 'Authors', 'Author') then

go recOld

else

ThisForm.Grid1.Refresh && Показываем найденную запись

endif

endif

При поиске важен регистр вводимых букв.

Действия, выполняемые обработчиками события Click кнопок формы, перечислены в табл. 2.6.

Таблица 2.6

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]