|
|
|
| Есть глобальная (public) функция - удаляет лишние пробелы в переданной в неё сроке.
В форме много полей
нельзяли не вешать проверку на события каждого поля (после обновления), а один раз где то в форме прилепить функцию или процедурку и потом передавать в функцию в какое поле и какая строка вновь введена и уж проверить и вернуть в то поле откуда взяли. | |
|
| |
|
|
|
| Даю кусок кода для формы с БОЛЬШИМ количеством контролов. Перебираются контролы формы и прописываются пользовательские функции для событий контролов.
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
|
| |
|
| |
|
|
|
| В функцию посылаем название формы?? | |
|
| |
|
12 Кб. |
|
| <<В функцию посылаем название формы??>>
В данном примере - аргументом функции является объект Form . Это табель-календарь с тучей лайблов, которые реагируют(подсвечиваются, меняют стиль, редактируют данные и пр.) на движение мыши, клик, нажатие кнопок и пр. причуды. Форму выложить лень - много вырезать надо. Пример запуска:
Private Sub Form_Load()
SetForeColor Me
End Sub
|
По большому счету, если вы не используете для обработки событий [Event Procedure], то следует открыть форму в режиме конструктора, запустить функцию, сохранить форму - и все пользовательские функции обработки событий прописаны, более запускать не требуется. | |
|
| |
|
|
|
| ага...
в функцию посылаем объект форма,
лазаем по контролам,Each ctl In frm.Controls
находим лабел, If .ControlType = acLabel
и если его .Name Like "lbl??" тогда ...
а что такое
.Name Like "lbl??"
.Name Like "txt??"
это тип контрола?? имя типа.. | |
|
| |
|
|
|
| В Вашем случае следует
If .ControlType = acTextBox Then
.AfterUpdate="=МояФункцияОбработкиСобытия(Аргумент1,Аргумент2..)"
End if
|
Оператор Like(на него приличный хелп в 2003) позоволяет отбирать группы контролов по признаку имени, в данном случае по первы трем буквам.
Можно ручками прописать как функции так и процедуры. Если на форме примерно сотня контролов, на каждый по 4-5 записей, то это всего 400-500 записей. | |
|
| |
|
|
|
| Да эт верно 400-500 записей... беру на вооружение.
огромное спасибо , что уделили мне стока своего времени на форуме. | |
|
| |
|
|
|
| да ладно...как умею. Закроем тему. | |
|
| |
|