С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Comanche

Глюк с TABCTL32.OCX, т.е. Microsoft Tabbed Dialog Control 6.0 (SP4)

07.12.2008, 18:24. Показов 2583. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обнаружил очередной глюк. На этот раз - у компоненты TABCTL32.OCX, т.е. Microsoft Tabbed Dialog Control 6.0 (SP4), точная версия - 6.00.8804.

Есть такой код:
Visual Basic
1
2
3
4
5
6
7
For i = 0 To SSTab1.Tabs - 1
    If SSTab1.TabCaption(i) <> 'Общие' Then
        SSTab1.TabVisible(i) = False
    Else
        SSTab1.TabVisible(i) = True
    End If
Next i
Смысл его понятен: оставить видимой только одну вкладку - ту, у которой на ярлыке значится 'Общие'.

Так вот, на определённом i строка SSTab1.TabVisible(i) = False вызывает... угадайте что? В жизни не догадаетесь! Событие SSTab1_Click !!! В котором, кстати, выполняется некоторый код.

Вообще-то, SSTab1_Click можно вызвать только путём SSTab1.Tab = N, где N - номер вкладки, по которой нужно 'щёлкнуть'. Ну или, на худой конец, генерацией события типа Call SSTab1_Click(m). Ну и плюс щелчком мыши, разумеется. Но уж никак не установкой свойства Visible!

Выход-то я нашёл, но такой, что самому противно:
Visual Basic
1
2
3
4
5
6
7
8
9
SSTab1.Visible = False  ' <<< добавил
For i = 0 To SSTab1.Tabs - 1
    If SSTab1.TabCaption(i) <> 'Общие' Then
        SSTab1.TabVisible(i) = False  ' <<< вот тут происходит генерация клика
    Else
        SSTab1.TabVisible(i) = True
    End If
Next i
SSTab1.Visible = True  ' <<< добавил
а в событие SSTab1_Click (в котором раньше только был 'некоторый' код) - дописал IF:
Visual Basic
1
2
3
If SSTab1.Visible Then
    ' выполнение 'некоторого кода'
End If
На этот раз я не просто сообщаю о 'граблях', а ищу собратьев по этим граблям, в смысле по несчастью. Кто-нибудь может прокомментировать этот топик? равно как и предыдущий мой топик в этом же форуме (про глюк у ImageCombo, от 29.09.02)? Почему, начиная с некоторого момента, 'нестандартные' контролы начинают глючить? Чего ещё можно ожидать в этом же духе? Я кое-как, конечно, выкрутился (по другому не назовёшь) с этими двумя контролами: 'дырку' с ImageCombo залатал с помощью DoEvents, а 'дырку' с SSTab - с помощью IF-а. Но вот допишу проект, пущу его в работу, а там как начнётся 'продолжение фильма'! По-моему, этого вполне можно ожидать... По крайне мере, ВСЕ результаты тестирования написанного на сегодняшний день кода я решил считать недействительными, и начал тестировать всё заново, - а это задачка не из лёгких, сами понимаете.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2008, 18:24
Ответы с готовыми решениями:

Как спомощью com компоненты Microsoft Common Dialog Control 6.0 открывать диалоги?
Подскажите пожалуста как спомощью com компоненты Microsoft Common Dialog Control 6.0 открывать диалоги, то есть при нажатии на 'Открыть'...

Окно новой формы Tabbed Notebook Dialog
Подскажите как создать окно новой формы Tabbed Notebook Dialog? В New Items тупо нет вкладки Forms. Спасибо.

Common Dialog Control
Vopros takoy: V MS Access97/2000 net takogo kontrola, chtoby vyzvat'v okne 'Explorer' faily v directorii(ili ya ne prav?) On yest' v...

6
0 / 0 / 0
Регистрация: 03.12.2007
Сообщений: 14
08.12.2008, 11:14
А чему ты удивляешься? Точно так же работают и OptionButton и CheckBox. Ты ими видимо никогда не пользовался. Кстати мне это кажется логичным. Если ты присваиваешь значение CheckBox, значит VB должен отобразить это в контроле, а значит и событие должно быть вызвано.
0
Comanche
08.12.2008, 12:07
2 kacerro:

1. Вы вообще внимательно читали топик? Цитирую: 'Если ты присваиваешь
значение CheckBox, значит VB должен отобразить это в контроле, а значит
и событие должно быть вызвано.' С этим никто и не спорит: яснее ясного,
что Check1.Value = 1 приведёт к Check1_Click (если перед этим это Value
было отлично от единицы, конечно). Речь-то не про это шла!

2. Только не надо мне говорить, что строчка кода Option1.Visible = True
или Option1.Visible = False должна вызвать событие Option1_Click ! Не
поверю :-)
0 / 0 / 1
Регистрация: 15.12.2007
Сообщений: 381
08.12.2008, 14:03
На самом деле глюка нет. Все работает так как и предполагалось.

Событие Click вызывается при переключении с таба на таб.
Теперь представте, что первый таб у Вас активный и Вы его прячете. Есстественно происходит переключение на второй. Вот Вам и событие.
Соответственно код Ваш можно модифицировать и не прятать SSTab полностью.
0
Comanche
08.12.2008, 15:42
2 NickStaves:

Спасибо, я упустил из виду, что если прячется активный в этот момент Таб, то активируется другой.

А что вы думаете про глюк у ImageCombo? Я имею в виду мой топик в этом же форуме.
0 / 0 / 1
Регистрация: 15.12.2007
Сообщений: 381
08.12.2008, 19:18
) Там воще что-то мутное.
У меня на сыром проекте под Win2000 этот глюк проявляется.
Мало того, если в ImageCombo уже стоит какое-нить значение и мы его-же присваиваем заново эта гадость снова вызывает Change
0
Comanche
09.12.2008, 17:40
Надо будет на досуге поискать на сайте MS заметки про ImageCombo - может, им уже давно известно про его глюки и они уже успели выпустить какую-нибудь заплатку. Да заодно посмотрю, есть ли к MS Windows Common Controls 6.0 сервис-пак старше 4-го - может, в нём это исправлено.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.12.2008, 17:40
Помогаю со студенческими работами здесь

Проблема с Common dialog control
Здравствуйте! Проблема заключается в следующем... Нужно, чтобы можно было открыть коммон диалог .ShowOpen с возможностью выбора...

Где же ты, Common Dialog Control?
Привет всем! Есть напряг: в XP не вижу Common Dialog компонента. Не подскажете, как действовать, может через API как-то работать (Мне...

Проблемы с MSINET.OCX: 'The Control not be created because it is not properly licensed'
Зарегестрировал MSINET.OCX с помощью regsvr32 msinet.ocx, затем действия следующие: - открываю свой макрос xls2html.xla - нажимаю...

Проблема c Сommon Dialog Control на клиентской машине
Установил на клиентской машине RunTime версию приложения, написанного на Access 97. Приложение включает в себя несколько ActiveX...

Common Dialog Control или что-то еще?
Приветствую, господа! Проблема возникла... Необходимо вывести дерево каталогов для выбора директории с инпутными файлами. Common Dialog...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru