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

10.8. Панель инструментов: создание и пример употребления

Панель инструментов – это визуальный объект, который, в частности, можно добавить в набор форм или ассоциировать с формой и использовать затем для управления набором форм или формой.

Панель инструментов как класс можно создать интерактивно в проектировщике классов или программно.

Рассмотрим последовательность интерактивного формирования панели инструментов ListFormToolBar (рис. 10.25), ассоциированной с приведенной на рис. 10.24 формой ListForm.

Рис. 10.25. Панель инструментов ListFormToolBar

Ее назначение – выполнять те же действия, что и обработчик события InteractiveChange списка Combo1. Так, при нажатии на кнопку V панели инструментов ListFormToolBar в списке List1 формы ListForm должен отобразится тот же список, что и при выборе значения Value в списке Combo1, нажатие на кнопку Al должно соответствовать выбору в Combo1 значения Alias, нажатие на S – выбору SQL и т. д.

Эта задача реализуется за счет включения в обработчик события Click кнопки V панели ListFormToolBar следующего кода:

&& Обработчик события Click кнопки V панели инструментов ListFormToolBar

ThisForm.oFormRef.Combo1.Value = "Value" && "Alias" в случае кнопки Al и т. д.

ThisForm.oFormRef.Combo1.InteractiveChange

в котором ThisForm – это ссылка на саму панель инструментов, а ThisForm.oFormRef содержит ссылку на форму ListForm. Таким образом, в результате выполнения приведенного кода, во-первых, меняется значение свойства Value списка Combo1 формы ListForm и, во-вторых, вызывается обработчик события InteractiveChange этого списка, что влечет изменение вида источника данных и самого источника данных списка ListForm.

Аналогичные, отличающиеся только значением, устанавливаемым в свойство Value, обработчики предусмотрены и для других кнопок панели инструментов.

Предположим, что класс ListFormToolBar уже создан и хранится в файле (библиотеке классов) d:\ToolBars.vcx. Обратимся на время к форме ListForm. Чтобы связать ее с панелью инструментов ListFormToolBar, в форму добавляется новое свойство oTBar, а в обработчик события Init формы – следующий код:

…

&& Дополнение к обработчику события Init формы ListForm

&&

&& Связываем форму с панелью инструментов ListFormToolBar

&& Открываем библиотеку классов d:\ToolBars.vcx

set classlib to d:\ToolBars

&& Свойству формы oTBar присваиваем значение ссылки на класс ListFormToolBar,

&& а создаваемому объекту в качестве параметра передаем ссылку на форму ListForm

ThisForm.oTBar = CreateObject('ListFormToolBar', ThisForm)

&& Показываем панель инструментов ListFormToolBar

ThisForm.oTBar.Show

&& Освобождаем библиотеку классов d:\ToolBars

release classlib d:\ToolBars

Из кода и комментария видно, что связь формы с панелью инструментов осуществляется в результате передачи последней ссылки на форму. Получаемая от функции CreateObject( ) ссылка на панель инструментов присваивается Public-свойству формы oTBar.

Иных изменений в форме ListForm нет, поэтому можно вернуться к панели инструментов.

Чтобы принять параметр ThisForm, в обработчик события Init панели инструментов включим следующие строки кода:

&& Обработчик события Init панели инструментов ListFormToolBar

&&

parameters oForm && oForm – принимает ссылку на объект форм

This.oFormRef = oForm

в которых oFormRef – это Public-свойство класса ListFormToolBar.

Сам класс создадим в проектировщике класса. Выполним для этого команду меню File – New и выберем в диалоге New переключатель Class и затем кнопку New File. В появившемся диалоге введем отображенные на рис. 10.26 данные:

Рис. 10.26. Создание нового класса ListFormToolBar

В открывшемся проектировщике класса при помощи панели инструментов Form Controls добавим в пока еще пустую панель инструментов ListFormToolBar 8 кнопок и приведем их в соответствие с рис. 10.25.

Употребляя команду меню Class – New Property, добавим в проектируемую панель инструментов новое с глобальной видимостью свойство oFormRef. Далее занесем в обработчики событий Init и Click соответственно панели инструментов ListFormToolBar и ее кнопок приведенные выше операторы.

Сформированный класс ListFormToolBar сохраним в файле d:\ToolBars.vcx, закроем этот файл, запустим форму ListForm, чтобы пронаблюдать и форму и ее панель инструментов (рис. 10.27).

Рис. 10.27. Нажата кнопка V панели инструментов ListFormToolBar

Созданный вариант взаимодействия формы и панели инструментов отличается тем, что панель геометрически не связана с формой. Чтобы вписать панель в форму, потребуется внести изменения, установив значения свойств ShowWindow и AlwaysOnTop формы соответственно в 2 и .T., а значение ShowWindow панели инструментов в 1. И, наконец, до обращения к функции CreateObject( ) в обработчике события Init формы следует поместить вызов ее метода Show, а в конце обработчика – вызов метода Dock панели инструментов:

&& Показываем форму

This.Show && или: This.Visible = .T.

&&

set classlib to d:\ToolBars

ThisForm.oTBar = CreateObject('ListFormToolBar', ThisForm)

ThisForm.oTBar.Show

release classlib d:\ToolBars

&&

&& Прикрепляем панель инструментов ListFormToolBar к окну формы ListForm

&& в ее верхнем левом углу

ThisForm.oTBar.Dock(0)

Панель инструментов в таком случае может быть помещена в форме, например так, как показано на рис. 10.28.

Рис. 10.28. Панель инструментов, встроенная в форму

Замечания:

  1. Форма, в которой значение свойства ShowWindow = 2, является SDI-формой (SDI – single document interface).

  2. Описание свойств, методов и событий объекта ToolBar см. в справке VFP, тема ToolBar Object.

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