Кнопки управления
Как правило, в полях формы отображается информация об одной записи. Для просмотра всех записей таблицы необходимо добавить в форму средства перемещения по записям. В Visual FoxPro имеются удобные инструменты, предназначенные для этих целей, — кнопки.
Для размещения кнопок управления в форме можно использовать две кнопки панели инструментов Form Controls (Элементы управления формы) (табл. 6.11).
Таблица 6.11. Кнопки панели инструментов Form Controls
Кнопка |
Наименование |
Назначение |
 |
Command Button (Кнопка) |
Создание одиночной кнопки |
 |
Command Group (Группа кнопок) |
Создание набора кнопок |
Размещение одиночных кнопок
Для размещения в форме одной кнопки выполните следующие действия:
- Нажмите кнопку Command Button (Кнопка) на панели инструментов Form Controls (Элементы управления формы) и щелкните мышью в месте предполагаемого размещения создаваемой кнопки.
- Откройте окно свойств созданного объекта.
- Кнопка может содержать текст или графическое изображение. При создании кнопки, содержащей текст, скорректируйте свойство Caption (Надпись), разместив в поле ввода значения текст, который будет отображаться на кнопке. Например, при создании кнопки для закрытия формы введите Выход.
- При создании кнопки, содержащей графическое изображение, для задания изображения, размещаемого на кнопке, воспользуйтесь свойством picture. Нажмите кнопку, расположенную справа от поля ввода значения свойства. В результате откроется диалоговое окно Open (Открыть) (рис. 6.18), используя которое, вы можете выбрать файл на диске, содержащий изображение. После выбора файла нажмите кнопку ОК для перенесения изображения на кнопку.
Замечание
В Visual FoxPro имеется возможность изменять размер диалогового окна Open (Открыть). Чтобы просмотреть изображение, содержащееся в выбираемом файле, необходимо в окне Open (Открыть) нажать кнопку меню Вид, а затем в открывшемся меню выбрать опцию Эскизы страниц.

Рис. 6.18. Диалоговое окно Open, предназначенное для выбора изображения на кнопке
- Кнопка размещена в форме. Теперь необходимо, используя автоматически вызываемый при нажатии кнопки метод объекта click (Нажатие), определить действия, выполняемые при нажатии этой кнопки. Отобразите в окне свойств объекта список всех методов. Для этого в окне Properties (Свойства) выберите вкладку Methods (Методы).
- Установите курсор на метод click (Нажатие) и щелкните мышью. На экране откроется окно процедур (рис. 6.19).
- Введите команды, которые должны выполняться при нажатии данной кнопки. Например, если вы создаете кнопку для выхода из формы, это могут быть следующие команды, использующие функцию messagebox ():
* Запрос для выхода из формы
IF MESSAGEBOX("Выходить из формы?",4+32+256, "Выход")=6
_screen.ActiveForm.Release()
ELSE
_screen.ActiveForm.Refresh))
ENDIF
- Закройте окно процедур. Кнопка создана.

Рис. 6.19. Окно процедур для метода Click
Редактирование составных объектов
Некоторые объекты Visual FoxPro, такие как commandGroup (Группа кнопок) и optionGroup (Переключатель), являются составными объектами, т. к. они содержат несколько объектов, имеющих свои собственные свойства.
Для работы с составными объектами Visual FoxPro предоставляет в распоряжение разработчика контекстное меню, содержащее команду Edit (Правка), переводящую объект в режим редактирования и позволяющую управлять входящими в его состав простыми объектами: перемещать их внутри рамки, изменять размеры, цвет, настраивать другие свойства. В режиме редактирования вокруг составного объекта появляется заштрихованная рамка (рис. 6.20).
Для выхода из режима редактирования необходимо щелкнуть вне области составного объекта.

Рис. 6.20. Объект CommandGroup в режиме редактирования
Создание группы кнопок
Для размещения в форме группы из нескольких кнопок можно использовать инструмент Command Group (Группа кнопок) на панели инструментов Form Controls (Элементы управления формы). Создаваемый при этом объект является составным и обладает свойством Buttcncount (Количество кнопок), определяющим количество входящих в его состав кнопок.
Воспользуемся данным инструментом для размещения в форме кнопок перемещения по записям таблицы и кнопки выхода из формы.
- Для создания набора кнопок нажмите кнопку Command Group (Группа кнопок) на панели инструментов Form Controls (Элементы управления формы) и щелкните в месте их предполагаемого размещения в форме.
- Откройте окно свойств для размещенного составного объекта.
- Свойство Buttoncount (Количество кнопок) объекта определяет количество кнопок, размещаемых в объекте (по умолчанию 2). Скорректируйте его, задав необходимое количество кнопок, например 5.
- Увеличьте с помощью мыши размеры рамки, окружающей созданный объект, чтобы в ней можно было расположить горизонтально все пять кнопок.
- Переведите объект в режим редактирования. Для этого установите на него курсор, нажмите правую кнопку мыши и выберите из контекстного меню команду Edit (Редактировать).
- Выделяя поочередно кнопки, переместите их, расположив горизонтально в одну линию.
- Выйдите из режима редактирования, щелкнув вне области объекта conunandGroup (Группа кнопок).
- Скорректируйте размер рамки, окружающей составной объект.
Совет
Для более точного задания размера рамки составного объекта выделите свойство AutoSize (Авторазмер) и установите для него значение True (Истина).
- Откройте окно свойств объекта типа commandGroup (Группа кнопок). Нажмите кнопку раскрытия списка в верхней части данного окна (рис. 6.21). Отметьте, что этот список содержит все объекты, размещенные в форме, а также все элементы, входящие в составной объект, под именами Command I, Command!, Command3, Command4, Command5. Выбирая поочередно элементы в этом списке, можно изменить свойства каждой кнопки.
- Используя свойство caption (Надпись) каждого элемента составного объекта, задайте названия кнопок: Первая, Следующая, Предыдущая, Последняя и Выход.
- Для задания цвета фона, на котором располагаются кнопки, используйте свойство BackColor (Цвет фона) объекта CommandGroup (Группа кнопок). Если вы хотите, чтобы он совпадал с цветом фона формы, установите для свойства BackStyle (Стиль фона) значение Transparent (Прозрачный).

Рис. 6.21. Окно свойств объекта типа CommandGroup
- Теперь необходимо определить команды, которые будут выполняться при нажатии на данные кнопки. Для этого, открывая поочередно окно процедур метода click (Нажатие) каждого элемента, входящего в составной объект, введите следующие команды:
Для кнопки Первая:
* Переходим на первую запись и обновляем информацию в форме IF !BOF()
GO TOP
ENDIF '
_screen.ActiveForm.Refresh()
Для кнопки Следующая:
* Переходим на следующую запись и обновляем в форме
IF !EOF()
SKIP ENDIF
_screen.ActiveForm.Refresh))
Для кнопки Предыдущая:
* Переходим на предыдущую запись и обновляем информацию в форме
IF !BOF()
SKIP - 1 ENDIF _screen.ActiveForm.Refresh()
Для кнопки Последняя:
* Переходим на последнюю запись и обновляем информацию в форме
IF !EOF ()
GO BOTTOM
ENDIF
_screen.ActiveForm.Refresh()
Для кнопки Выход:
* Запрашиваем и выходим, если Да
IF MESSAGEBOX("Выходить из формы?",4+32+256, "Выход")=6
_screen.ActiveForm.Release()
ELSE
_screen.ActiveForm.Refresh()
ENDIF

Рис. 6.22. Форма с размещенной группой кнопок
- После ввода команд закройте окна процедур.
- Набор кнопок для перемещения по записям таблицы и выхода из формы создан. Запустите форму на выполнение по команде Run Form (Запустить форму) из меню Form (Форма). Для перемещения по записям таблицы и закрытия формы используйте кнопки, находящиеся в нижней части окна (рис. 6.22).