"Плавающая" кнопка в ленточной форме. (упрощенный вариант)
Данный способ более прост, чем реализация с помощью API, но с некоторыми ограничениями при работе с полем, к которому принадлежит “плавающая кнопка”. Например, мы теряем возможность редактирования непосредственно в поле. Но всегда ли нам требуется эта возможность, если мы повесили кнопку? Способ довольно прост. Работает и в MSA 97, 200, 2002.
Начнем с поля со списком. Здесь все просто.
Кнопку мы загораживаем белым полем, которое выводим “на передний план”. (Меню “Формат”).
Все.
Теперь при получении фокуса поля со списком кнопка выбора будет выглядывать из-за поля, при чем только в текущей записи.
Для красоты в событии поля GotFocus() поставим
Me.cboПолеСоСписком.SetFocus
Me.cboПолеСоСписком.Dropdown
С простым полем несколько сложнее, т.к. сколько кнопку лежащую на форме не загораживай, она все равно будет выглядывать из-за “экрана”. Но и здесь много кодить не надо. Необходимо лишь, кнопку положить на редактируемое поле, а затем загородить полем – экраном. Вот такой вот сэндвич. Т.е. 1 слой, редактируемое поле, 2 – “плавающая кнопка”, 3 – поле-экран. В этом случае кнопка точно не будет видна.
Осталось научить кнопку выглядывать.
Для этого на событие GotFocus() редактируемого поля, да в прочем и поля-экран ставим строчку
Me.cmdПлавающаяКнопка.SetFocus
Все. Пара контролов, одна строчка кода и ни какого API. :)
Но для тех, кто не хочет мириться с возможностью редактирования поля, всегда могут воспользоваться способом по ссылке
http://www.hiprog.com/access/article.asp?idd=218
С уважением!
Егоров Алексей (АлексейЕ)