Имеем много 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 есть такое понятие "процедура").
Как сделать Вашу задачу с помощью переменных - я не знаю. Я вообще пытался сделать Вашу задачу любым способом, чтобы мало писать кода.
Благодаря этому примеру, код станет намного меньше, однозначно!
Всем доброго вечера.
Данная тема для меня очень актуальна, но к сожалению примеры приведенные администратором не доступны.
Если есть возможность, пожалуйста, продублируйте или повторите примеры.
Заранее спасибо.
Создайте новую тему, там обсудим.