Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: [:icon_rol:]
 
 автор: час   (11.10.2007 в 08:20)   личное сообщение
 
 

Есть глобальная (public) функция - удаляет лишние пробелы в переданной в неё сроке.
В форме много полей
нельзяли не вешать проверку на события каждого поля (после обновления), а один раз где то в форме прилепить функцию или процедурку и потом передавать в функцию в какое поле и какая строка вновь введена и уж проверить и вернуть в то поле откуда взяли.

  Ответить  
 
 автор: alecks_lp   (11.10.2007 в 09:25)   личное сообщение
 
 

Даю кусок кода для формы с БОЛЬШИМ количеством контролов. Перебираются контролы формы и прописываются пользовательские функции для событий контролов.

Public Function SetForeColor(frm As Form)
On Error Resume Next
Dim ctl As Control

For Each ctl In frm.Controls
    With ctl
    If .ControlType = acLabel Then
        If .Name Like "lbl??" Then
            .ShortcutMenuBar = "SetDayOption"
        ElseIf .Name Like "txt??" Then
            .OnMouseMove = "=GetLabelFlash(" & Val(Mid(.Name, 4)) & ")"
            .OnClick = "=UpdateTabelItem(" & .Name & ")"
        End If
        .OnMouseDown = "=SetLableStyle(" & .Name & ",2)"
        .OnMouseUp = "=SetLableStyle(" & .Name & ",1)"
        .BackStyle = 1
        .BackColor = LABEL_RAISED_BackColor
    
    End If
    End With
Next
End Function

  Ответить  
 
 автор: час   (14.10.2007 в 18:50)   личное сообщение
 
 

В функцию посылаем название формы??

  Ответить  
 
 автор: alecks_lp   (15.10.2007 в 08:16)   личное сообщение
12 Кб.
 
 

<<В функцию посылаем название формы??>>
В данном примере - аргументом функции является объект Form . Это табель-календарь с тучей лайблов, которые реагируют(подсвечиваются, меняют стиль, редактируют данные и пр.) на движение мыши, клик, нажатие кнопок и пр. причуды. Форму выложить лень - много вырезать надо. Пример запуска:

Private Sub Form_Load()
       SetForeColor Me
End Sub

По большому счету, если вы не используете для обработки событий [Event Procedure], то следует открыть форму в режиме конструктора, запустить функцию, сохранить форму - и все пользовательские функции обработки событий прописаны, более запускать не требуется.

  Ответить  
 
 автор: час   (16.10.2007 в 15:42)   личное сообщение
 
 

ага...
в функцию посылаем объект форма,
лазаем по контролам,Each ctl In frm.Controls
находим лабел, If .ControlType = acLabel
и если его .Name Like "lbl??" тогда ...
а что такое
.Name Like "lbl??"
.Name Like "txt??"
это тип контрола?? имя типа..

  Ответить  
 
 автор: alecks_lp   (17.10.2007 в 09:54)   личное сообщение
 
 

В Вашем случае следует


If .ControlType = acTextBox Then
     .AfterUpdate="=МояФункцияОбработкиСобытия(Аргумент1,Аргумент2..)"
End if

Оператор Like(на него приличный хелп в 2003) позоволяет отбирать группы контролов по признаку имени, в данном случае по первы трем буквам.
Можно ручками прописать как функции так и процедуры. Если на форме примерно сотня контролов, на каждый по 4-5 записей, то это всего 400-500 записей.

  Ответить  
 
 автор: час   (18.10.2007 в 08:11)   личное сообщение
 
 

Да эт верно 400-500 записей... беру на вооружение.
огромное спасибо , что уделили мне стока своего времени на форуме.

  Ответить  
 
 автор: alecks_lp   (18.10.2007 в 10:00)   личное сообщение
 
 

да ладно...как умею. Закроем тему.

  Ответить  
 
 автор: час   (19.10.2007 в 13:16)   личное сообщение
 
 

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList