|
|
|
| Здравствуйте!!! Помогите пожалуйста реализовать следующюю задумку:
имеется форма с полями (полями со списками), необходимо, чтобы при получении фокуса цвет фона поля (поля со списком) изменялся, а после потери фокуса становился прежним (по умолчанию для access).
Как достигнуть такого эффекта? И как лучше реализовать вышеизложенное? | |
|
| |
|
|
|
| там у поля есть события получение фокуса и потеря фокуса
свойство поля которое надо обрабатывать (задавать значения цвета) BackColor
про число цвета - тут не так давно Час целую программку написал - пошухайте
=============
добавлено
пример
Private Sub ПолеСоСписком36_GotFocus()
Me!ПолеСоСписком36.BackColor = RGB(255, 0, 0)' красное поле
End Sub
Private Sub ПолеСоСписком36_LostFocus()
Me!ПолеСоСписком36.BackColor = RGB(255, 255, 255) 'белое поле
End Sub | |
|
| |
|
|
|
| Спасибо!!! По поводу событий все понятно, а можно ли все это реализовать через функцию? Ведь придется применять данную процедуру к каждому полю... | |
|
| |
|
|
|
| можно - только вызывать функцию придется все равно из каждого поля и каждого события
например так
Private Sub ПолеСоСписком36_GotFocus()
call ColorSet(Me!ПолеСоСписком36.Name,True)
End Sub
Private Sub ПолеСоСписком36_LostFocus()
call ColorSet(Me!ПолеСоСписком36.Name,False)
End Sub
Private function ColorSet (asd as string, dfg as boolean)
if dfg = True Then
Me(asd).BackColor = RGB(255, 0, 0)' красное поле
else
Me(asd).BackColor = RGB(255, 255, 255) 'белое поле
end if
end function | |
|
| |
|
|
|
|
| ну еще можно выдернуть
имя контрола на котором установлен фокус
Screen.ActiveControl.Name
потом в функции сначала обнулить все контролы (сделать фоновыми)
а потом нужный контрол покрасить в нужный цвет
при таком раскладе нужно будет просто вызвать функцию без передачи ей переменных
как-то так
Private Sub ПолеСоСписком36_GotFocus()
call ColorSet()
End Sub
Private Sub ПолеСоСписком37_GotFocus()
call ColorSet()
End Sub
Private Sub ПолеСоСписком38_GotFocus()
call ColorSet()
End Sub
Private function ColorSet ()
dim asd as string
asd=Screen.ActiveControl.Name
Me!ПолеСоСписком36.BackColor = RGB(255, 255, 255)'белое поле
Me!ПолеСоСписком37.BackColor = RGB(255, 255, 255)'белое поле
Me!ПолеСоСписком38.BackColor = RGB(255, 255, 255)'белое поле
Me(asd).BackColor = RGB(255, 0, 0) 'красное поле
end function | |
|
| |
|
|
|
| А как реализовать эту функции на глобальном уровне, а не внутри модуля формы, то есть сделать возможным применение функции в других формах. | |
|
| |
|
|
|
| вставляете в модуль
только вместо Private
пишете Public
вместо Me
Пишите полное обращение к форме
forms![имя формы]
можно выдернуть имя формы на которой находится фокус
Screen.ActiveForm.Name
вот только обход контролов на форме надо через цикл сделать что бы не прописывать их все | |
|
| |
|
|
|
| Огромное спасибо!! Точ то доктор прописал!! | |
|
| |