Переменная для массового изменения свойств textbox и Combobox

Автор Илья, 14 мая 2014, 21:12

Илья

Имеем много textbox-ов и Combobox-ов, при выборе значения в одном из них, в других происходят изменения в свойствах, таких как:

.BackColor = &H8000000F;
.Enabled = False;
.Locked = True;
.SpecialEffect = fmSpecialEffectEtched

и обратно:

.BackColor = &H80000005;
.Enabled = True;
.Locked = False;
.SpecialEffect = fmSpecialEffectSunken

Если писать свойства отдельно для каждого textbox и Combobox, код становится очень большим и запутанным.

Собственно вопрос: как упростить процесс изменения свойств, к примеру, создать одну общую переменную, которая может менять указанные свойства в любом textbox и Combobox, что-то типа этого:
А = .BackColor = &H8000000F                           В = .BackColor = &H80000005
      .Enabled = False                                                 .Enabled = True
      .Locked = True                                                    .Locked = False
      .SpecialEffect = fmSpecialEffectEtched                .SpecialEffect = fmSpecialEffectSunken

Желаемый результат:
If Combobox1.Value = 1 Then
                   Combobox2.Свойства = A
                   Textbobox3.Свойства = А
                   Combobox4.Свойства = В
                   Combobox5.Свойства = В и т.д.

Заранее благодарю за помощь!

Администратор

Илья, когда нужно работать с большим кол-вом элементов управления на форме, используют класс.
См. вложенный файл.

Я сам плохо понимаю, что и как работает, поэтому плохо могу объяснить процессы.

[вложение удалено администратором]

Илья

У меня офис 2003, который этот формат не открывает.

Администратор

Установите эту программу, она позволяет открывать в "Excel 2003" файлы новых форматов:
http://www.microsoft.com/ru-ru/download/details.aspx?id=3

Илья

Установил, перезагрузил... Пишет, что неизвестный формат файла.

Можете пересохранить в XLS?

Администратор

Выложил в формате "xls".

[вложение удалено администратором]


Илья

Мне кажется, что этот пример не совсем то, что я ожидал увидеть.
Нужно переменной упростить код в примере.

[вложение удалено администратором]

Администратор

Илья, опишите словесно, что должно происходить на форме, которую Вы выложили в ответе #7.

Илья

При выборе одной из категорий в комбобоксе, один или несколько тектстбоксов, не относящихся к выбранной категории, становятся неактивным, дабы пользователь не утруждал себя вводом ненужных данных в форму и табуляцией его можно было "перепрыгнуть" в активный текстбокс, предназначенный для ввода данных согласно выбранной категории в комбобоксе.
Т.е. свойство текстбокса равнялось, к примеру, переменной "А", а эта переменная, в свою очередь,
равнялась .BackColor = &H8000000F
                 .Enabled = False
                 .Locked = True
                 .SpecialEffect = fmSpecialEffectEtched
Заморочка моего вопроса в том, чтобы упростить код в части раздачи свойств текстбоксам и комбобоксам, не писать в свойствах кучу значений, а заменить (эту кучу) переменной с заранее подготовленными свойствами.

Повторюсь, не писать это: .BackColor = &H8000000F
                                            .Enabled = False
                                            .Locked = True
                                            .SpecialEffect = fmSpecialEffectEtched
а писать это: "А"

Администратор

Илья, такой алгоритм в форме из ответа #7:?

  • пользователь выбирает в комбобоксе 1 или 3 - поля 1 и 3 становятся неактивными, поле 2 активное;
  • пользователь выбирает в комбобоксе 2 - поля 1 и 3 становятся активными, поле 2 неактивное.

Администратор

Вот такой вариант (см. вложение).

[вложение удалено администратором]

Илья

Я так понял, что "myDeactivation" и "myActivation" это как раз и будут нашими "переменными"!
Замечательный пример!
Спасибо!

Администратор

Илья, я сделал без переменных.
"myDeactivation" и "myActivation" - это процедуры (в VBA есть такое понятие "процедура").

Как сделать Вашу задачу с помощью переменных - я не знаю. Я вообще пытался сделать Вашу задачу любым способом, чтобы мало писать кода.

Илья

Благодаря этому примеру, код станет намного меньше, однозначно!