Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2010, 16:11   #1
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию Программное изменение свойств UserForm по умолчанию

Уважаемые профессионалы, хотелось бы услышать Ваш приговор
Возможно ли при закрытии книги (надстройки) с UserForm сохранить и внесенные программно изменения свойств ее Controls? В частности, свойств Visible и Enabled?
При закрытии книги с сохранением, независимо от того, выгружалась ли форма (немодальная, имеется ввиду), она все-равно выгрузится и при новом пуске ее Controls получат свойства, прописанные в окне свойств vba.
Может есть возможность программно менять свойства в этом окне?
Проблема актуальна в случаях, когда для универсальности создается форма (или совокупность форм) для некоего максимального варианта, а для меньших - вид формы регулируется видимостью и доступом к элементам.
Приходится при каждом пуске проги эти свойства заново устанавливать, что ощутимо сказывается на быстродействии. У меня, например, 6 форм с общим количеством элементов около 1000. Соответственно, и адресация к элементам не прямая, по имени, а поиском, по типу и индексированным именам
Подскажите, плиз
alvazor вне форума Ответить с цитированием
Старый 13.08.2010, 16:18   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я думаю,что есть 2 варианта.
1.Запись параметров в реестр.
2.Создать INI файл и записывать читать данные с него
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 13.08.2010, 16:26   #3
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Спасибо, doober!
Что-то такое видел у Уокенбаха, надо глянуть. Вдруг въеду - я совсем профан по реестру и ini
Неужели это и всё?
alvazor вне форума Ответить с цитированием
Старый 13.08.2010, 16:29   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Будет сегодня время.сделаю простенький пример
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 13.08.2010, 16:33   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от alvazor Посмотреть сообщение
Неужели это и всё?
Всё.
При закрытии формы перебираем в цикле все контролы, и записываем значения нужных свойств в реестр.

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

Цитата:
Приходится при каждом пуске проги эти свойства заново устанавливать, что ощутимо сказывается на быстродействии. У меня, например, 6 форм с общим количеством элементов около 1000. Соответственно, и адресация к элементам не прямая, по имени, а поиском, по типу и индексированным именам
А ускорения этого процесса вы вряд ли добьётесь.

Кода будет меньше - но на скорости работы макроса это не скажется.
EducatedFool вне форума Ответить с цитированием
Старый 13.08.2010, 16:38   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Там всего-то три команды: GetSetting, SetSetting и GetAllSettings, если работать с реестром. Т.е. в реестр тебе нужно записывать, например индекс или имя контрола и его значение, а потом читать сохранённые значения. Не думаю, что это очень убыстрит
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 13.08.2010, 16:43   #7
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Там всего-то три команды: GetSetting, SetSetting и GetAllSettings, если работать с реестром. Т.е. в реестр тебе нужно записывать, например индекс или имя контрола и его значение, а потом читать сохранённые значения. Не думаю, что это очень убыстрит
Правильно ли я понимаю:
если после инсталляции я сохраню введенные изменения в реестре, то при последующих пусках проги системы защиты верещать не будут, поскольку я только считываю данные, не меняя их?
alvazor вне форума Ответить с цитированием
Старый 13.08.2010, 16:47   #8
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

А почему системы защиты будут верещать? Ведь ты пишешь в ветку HKEY_CURRENT_USER\Software\VB and VBA Program Settings
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 13.08.2010, 16:47   #9
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
.
А ускорения этого процесса вы вряд ли добьётесь.
Кода будет меньше - но на скорости работы макроса это не скажется.
Спасибо, успокоили, а то обилие циклов поневоле в сомнения вводит
alvazor вне форума Ответить с цитированием
Старый 13.08.2010, 16:48   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
то при последующих пусках проги системы защиты верещать не будут
Не будут верещать и при записи.
Работа с реестром ведется в ветке HKEY_CURRENT_USER\Software\VB and VBA Program Settings, и пользователь Windows даже с самыми ограниченными правами имеет право на запись в этом разделе реестра.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MS Outlook: изменение свойств автоархивации папки aviette Фриланс 11 20.12.2009 00:50
массовое изменение свойств компонентов CraZZy RabbIt Компоненты Delphi 1 15.03.2009 23:13
Изменение свойств файла dimonbest Win Api 7 23.02.2009 20:42
Изменение свойств компонентов jocry Общие вопросы Delphi 9 10.02.2009 10:27
изменение формата всех Label на UserForm Иван Иванович Microsoft Office Excel 1 01.12.2008 14:30