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

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

07.12.2008, 18:24. Показов 2611. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru