Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ленточные формы и неприсоединенные элементы управления

Поиск

Я изменил свойство Режим по умолчанию (Default View) моей формы на значение Лен­точные формы (Continuous Form), и мой программный код сошел с ума. Что произошло?


Режим Ленточные формы (Continuous Form) (см. разд. "Отображение нескольких записей в любой форме" главы 12) — удобный способ одновременного отображения несколь­ких записей на форме. Но у него появляется ряд существенных ограничений при сопри­косновении с кодом. Вы увидите их, когда вставите свободные или неприсоединенные элементы управления — элементы управления, не связанные с каким-либо полем в БД. В предыдущем примере InfoMessage — образец свободного элемента управления. Ваш код применяет его для отображения текста по вашему желанию. Он не взаимодействует со значением поля в таблице.

В этом и заключается проблема: когда используется свободный элемент, у вас для обра­ботки есть только одна копия. Если соединить свободный элемент с ленточной формой, вы получите парадокс — а именно, существует только один элемент управления, ото­бражающийся на экране в нескольких местах одновременно (рядом с каждой записью).

Это явление — не проблема, если вы не хотите корректировать ваш свободный элемент. Поскольку на самом деле существует только один неприсоединенный элемент управле­ния, когда вы изменяете его в одном месте, он изменяется в других точках отображения. В только что рассмотренном примере, когда начинается редактирование записи, при­знак режима редактирования появляется рядом с каждой записью, даже если на самом деле редактируется только одна из них.

К сожалению, подобное поведение отражает проектное ограничение Access. Лучший об­ходной прием — избегать ленточных форм при необходимости использовать свободные элементы управления.

 

 

Создание эффекта перемещения указателя мыши

Эффект перемещения указателя мыши (mouseover effect) — это действие, возникающее при перемещении мыши поверх какого-либо участка формы. Web-дизайнеры часто используют этот эффект для изменения внешнего вида кнопок при перемещении по ним указателя мыши.

В программе Access легко создать эффект перемещения указателя. Необходимо только отреагировать на событие Перемещение указателя (On Mouse Move). Вы можете использо­вать событие формы Перемещение указателя (On Mouse Move), если хотите следить за перемещением мыши по всей форме. Но гораздо чаще событие Перемещение указателя (On Mouse Move) применяется к конкретным элементам управления, что позволяет опреде­лить перемещение указателя поверх этих элементов управления.

В форме, приведенной на рис. 16.10, применяется эффект перемещения указателя мыши.

Как обычно для реализации подобного поведения, следует начать с добавления дополни­тельных необходимых элементов управления, например кнопки Don't Click Me (не щелкай меня мышью) и рисунка (названного HappyFace (счастливое лицо)).

Когда описанные детали добавлены, необходимо создать две процедуры. Первая реагирует на событие кнопки Перемещение указателя (On Mouse Move). Она заменяет рисунок счаст­ливого лица рисунком с расстроенным лицом, когда мышь перемещается поверх кнопки:

Private Sub DoNotClickButton_MouseMove(Button As Integer, _

Shift As Integer, X As Single, Y As Single)

HappyFace.Picture = "C:\Images\UnHappy.jpg" End Sub


 
 

Рис. 16.10. Вверху: первоначальное отображение формы. Внизу: когда мышь перемещается поверх кнопки Don't Click Me (не щелкай меня мышью), на изображении, расположенном сбоку, счастливое лицо сменяется расстроенным. Подвигайте мышь где-нибудь в другом месте, и счастливая физиономия вернется на экран

В этом коде предполагается, что файл с изображением (названный UnHappy.jpg) поме­щен в папку C:\Images.

Как и при создании другого программного кода, можно ввести текст процедуры вручную в уже существующий модуль формы, или, что гораздо удобнее, применить для ее создания Окно свойств (см. разд. "Помещение кода в форму "ранее в этой главе).

 

 

Подсказка

Событие Перемещение указателя (On Mouse Move) возникает очень часто. Когда мышь пе­ремещается от одного края формы к другому, подобные события возникают многократно. По этой причине следует убедиться в быстроте выполнения написанного вами кода, реагирующего на данное событие, иначе он может сделать вашу форму медлительной.

 

 

Вторая процедура реагирует на событие Перемещение указателя (On Mouse Move) объ­екта формы Область данных, которая возникает, когда вы отодвигаете мышь от кнопки и


перемещаете ее поверх свободного пространства, находящегося вокруг нее. Данная про­цедура переключает на исходный рисунок, отображающий счастливое лицо.

 

Private Sub Detail_MouseMove(Button As Integer, _

Shift As Integer, X As Single, Y As Single)

HappyFace.Picture = "C:\Images\Happy.jpg"

End Sub

У написанного кода есть один недостаток. В данный момент он рассчитывает на то, что файлы UnHappy.jpg и Happy.jpg находятся в конкретных местах жесткого диска. Эту деталь трудно гарантировать — в конце концов, кто сказал, что вы не можете перенести их куда-нибудь в другое место или попытаться открыть БД на другом компьютере?

Лучше поместить рисунки в ту же папку, что и файл БД. Вы можете указать программе Access на подобное местоположение с помощью следующего кода:

 

HappyFace.Picture = CurrentProject.Path & "\Happy.jpg"

В этом коде применяется специальный объект, всегда доступный в любом коде, который вы пишите: объект CurrentProject (текущий проект), предоставляющий информацию о текущей БД и содержащихся в ней объектах. У объекта CurrentProject есть свойство Path (путь), задающее в виде текстовой строки местоположение текущей БД.

Поместив эту строку, вы сможете спокойно копировать вашу БД куда угодно при усло­вии, что файлы рисунков находятся в той же папке.

 

 



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 204; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.37.129 (0.005 с.)