Заранее прошу прощения за длинный вопрос ...Проблемы с некоторыми VB6 DataGrids на Windows 7
У меня есть очень большой проект, написанный на VB6, что мне нужно использовать на некоторых Windows 7, ПК. На них много форм с датагридами. Три из этих datagrids являются ошибками в том смысле, что они (а) имеют остатки того, что было на экране, до того, как показываются датаариды (части рабочего стола или другие части приложения под datagrid) и (b) щелчок, выделение , и прокрутка не работает должным образом (выбор одной строки не отменяет выбора другой строки, прокрутка в одну сторону не позволяет вам прокручивать назад, среди прочих ошибок).
Дополнительная информация:
- на WindowsXP и Win7 32-бит, проблема не появляется; он появляется только на Win7 64-bit
- Если vb6 установлен (да, с многочисленными ошибками в пути) на 64-разрядной машине Win7, проблема пропадает
- Есть некоторые проблемы, когда строки другой сетки и многие текстовые файлы в приложении очень темные и трудночитаемые (как на Win7 32, так и на 64-разрядных), но это исправлено в обоих случаях, переключившись на классическую тему Windows 7 (aero off)
То, что я пробовал:
- манипулировал
MsDatGrd.ocx
м Нью-Йорк Таймс. Я скопировал его из рабочего WinXP, из 32-разрядного Win7 и даже с исходного установочного диска vb6 SP6. Я пробовал каждую замену файла ocx в папкахsyswow64
иsystem32
, незарегистрированных и перерегистративных в каждом месте. Я должен отметить, что когда я незарегистрировал файл (regsvr32.exe
из обеих папок иsyswow64
) и получил уведомление об успехе, я все равно нашел его в реестре (regedit). - Я попытался создать новую форму и скопировать элементы управления и код в новую форму.
- Я попытался удалить ссылку на ocx в верхней части формы в блокноте (где сказано
Object = "{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}#1.0#0"; "MSDatGrd.ocx"
). Я даже не получил ошибку в этом случае, но сетка все еще работала, как ожидалось. Единственный раз, когда я мог получить ответ от управления файлом ocx, я удалил его из syswow64; в этот момент приложение просто не откроется.
Причина, по которой я считал, что форма сама по себе может быть проблемой, связана с тем, что я столкнулся с файлами журналов из двух форм с разбитыми датаидами (примечание: 1 datagrid для каждой формы). Я думаю, что файлы журналов были созданы некоторое время назад во время одной компиляции. Они оба говорят следующее:
Could not create reference: '{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}#1.0#0'.
Could not create reference: '{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0'.
Примечание: первая ссылка в каждом файле есть msdatgrd.ocx
, то второй является mscomctl.ocx
(который, кажется, не имеют каких-либо проблем).
Итак ... есть ли что-нибудь еще, что каждый может придумать, чтобы помочь мне решить эту проблему? Я предпочел бы исправить проблему, вместо того, чтобы использовать другой метод, например, использовать mshflexgrid или стороннюю сетку и т. Д.
Благодарим вас за отзыв Lee. Режим совместимости не разрешил эту проблему, и я предвидел все возможные комбинации опций. На самом деле ничего заметного не изменилось. Для цвета я проверил два разных DataGrids, один из которых не выглядит черным на Win7, а другой - на нем. Оба имеют одинаковые настройки (цвета тем оформления), поэтому я не думаю, что это проблема. Проблема с прокруткой - прокрутка с ошибкой, а не то, что она не работает; он работает с некоторыми другими формами (я уже применил это исправление уже в среде IDE). Наконец, перерисовка не является свойством DataGrid (только flex/hflex). – user1422348
Жаль, что это не помогло. У обеих сеток данных одинаковый цвет темы? Может быть, тема Aero обрабатывает некоторые цвета темы, но не другие. –
Проблема цвета оказалась ошибкой, которая не появлялась в WinXP. Другой гексаговый цвет для фона DataGrid все еще показывал предварительный просмотр как белый, если его рассматривали в дизайнере на XP, но показывал черный в разработчике на Win7. Но да, вы правы, что Aero обрабатывает цвета немного разные, но это не влияет на функциональность сетки. – user1422348