Одинаковые действия для однотипных контролов передаче фокуса

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Одинаковые действия для однотипных контролов передаче фокуса

Сообщение Space » 26.01.2007 (Пт) 2:24

Подскажите, плиз, у меня куча текстовых полей на форме (не массив), можно ли как-то делать одинаковые действия для них при потере и получения ими фокуса одной процедурой, не используя персональные обработчики потери и получения фокуса этих текстбоксов, например, устанавливать BackColor при перемещении фокуса?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 26.01.2007 (Пт) 2:42

Нет. Только массив.
Как вариант, можно в обработчике события каждого элемента вызывать одну общую процедуру, но гемороя от этого меньше не станет.
А я все практикую лечение травами...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Одинаковые действия для однотипных контролов передаче фо

Сообщение Andrey Fedorov » 26.01.2007 (Пт) 9:27

Space писал(а):Подскажите, плиз, у меня куча текстовых полей на форме (не массив), можно ли как-то делать одинаковые действия для них при потере и получения ими фокуса одной процедурой, не используя персональные обработчики потери и получения фокуса этих текстбоксов, например, устанавливать BackColor при перемещении фокуса?


Можно. Надо один раз написать класс-обработчик данных контролов, и при открытии формы создавать коллекцию, куда добавлять эти классы.

Оно достаточно просто - я даже как-то пример выкладывал...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 26.01.2007 (Пт) 12:16

В случае с BackColor можно проще...
хочешь по таймеру, хочешь - как ещё - просто
Код: Выделить всё

Private oldActiveControl As TextBox
Private Const COLOR_ACTIVE = &HFFFF40
Private Const COLOR_INACTIVE = &HFFFFFF

'... где это писать - сам решай - как удобнее, проще всего таймер
If TypeOf ActiveControl Is TextBox Then 'And ActiveControl.Tag="MyTBGroup" Then
    'Раскомментируй проверку тэга если групп несколько
    If Not(oldActiveControl Is Nothing) Then
        oldActiveControl.BackColor = COLOR_INACTIVE
    End If
    Set oldActiveControl = ActiveControl
    ActiveControl.BackColor = COLOR_ACTIVE
Else
    If Not(oldActiveControl Is Nothing) Then
        oldActiveControl.BackColor = COLOR_INACTIVE
    End If
    Set oldActiveControl = Nothing
End If

Пример прилагаю...
Вложения
TextBoxes.rar
простенький примерчик
(1.41 Кб) Скачиваний: 36
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 87

    TopList