Форум: "Основная";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];
ВнизЗакладки PageControl Найти похожие ветки
← →
Oleg (2010-07-13 00:53) [0]Здравствуйте.
Выявилась такая проблема:
Есть на форме компонент TPageControl, иногда свойство OwnerDraw выставляется в false, чтобы вручную выводить надписи на закладках определенным шрифтром и цветом. При работе программы в операционной системе Windows7 иногда событие OnDrawTabs компонента не вызывается, вызов этого события не происходит.
Это происходит не на любом компьютере, на котором установлена Window7, преимущественно на тех, где 64-х битная система, но встретилось и на одном с 32-х битной. Еще такое же поведение было замечено на компьютере с системой Windows 2008 Server 64-х битной (при проверке на других компьютерах с такой же системой не воспроизводимо).
Вопрос: как можно попытаться решить данную проблему? Какое событие, может быть, нужно отловить, чтобы сделать ручной вывод требуемых надписей на заголовках панелей TPageControl?
PS проект написан на Delphi 7.
PPS ошибка не плавающая. В смысле, На отдельно взятом компьютере с перечисленными ОС либо работает как надо всегда, либо не работает никогда (закладки остаются пустыми при установке свойства OwnerDraw в false).
← →
KilkennyCat © (2010-07-13 01:00) [1]не отлавливать, а вызывать перерисовку вручную.
← →
Oleg (2010-07-13 01:09) [2]
> KilkennyCat © (13.07.10 01:00) [1]
В какой момент? Я сам не знаю, когда должна перерисоваться какая-то из закладок, которая, например, была "закрыта" куском окна другого приложения, или часть окна утащили за край рабочего стола, а потом вернули обратно.
← →
Германн © (2010-07-13 01:16) [3]
> иногда свойство OwnerDraw выставляется в false, чтобы вручную
> выводить надписи на закладках определенным шрифтром и цветом.
>
Ничего не перепутал?
← →
Leonid Troyanovsky © (2010-07-13 08:04) [4]
> Oleg (13.07.10 00:53)
> Есть на форме компонент TPageControl, иногда свойство OwnerDraw
> выставляется в false
Что значит "иногда"? Умерла, так умерла.
> В какой момент?
В OnDrawTab, вестимо.
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2010-07-13 08:44) [5]> Oleg (13.07.2010 00:53:00) [0]
Ну дык 64 бита же, это в два раза большим количеством надо ворочать, вот и
не успевает.
← →
Deltas © (2010-07-13 12:53) [6]
> Oleg (13.07.10 00:53) [0]
> ...иногда свойство OwnerDraw выставляется в false...
> ...иногда событие OnDrawTabs компонента не вызывается...
>
Так что Вам кажется в этом странным?
← →
Deltas © (2010-07-13 13:10) [7]Если все-таки это проблема Delphi 7, которая, конечно, не поддерживает версии Windows Vista и выше (программы работают, но встречаются проблемы), попробуйте обрабатывать событие WM_DRAWITEM, оно приходит, когда нужно отрисовать закладку и не только.
P.S. Сначала вызывается виртуальный WndProc(), а отдельные обработчики сообщений потом. Так что в WndProc() сообщение будет обработано раньше.
← →
KilkennyCat © (2010-07-15 01:18) [8]
> проблема Delphi 7, которая, конечно, не поддерживает версии Windows
> Vista и выше
ну конечно. особенно учитывая TPageControl и доступ к генофонду.
> программы работают, но встречаются проблемы
это высказывание применимо всегда и ко всему, а не только к "D7 и виста"
← →
Deltas © (2010-07-15 13:59) [9]
> KilkennyCat © (15.07.10 01:18) [8]
> это высказывание применимо всегда и ко всему, а не только
> к "D7 и виста"
В D7 и Vista - это вполне определенный набор проблем при работе с графическим интерфейсом, которые заложены в исходных текстах отладочных библиотек (Source), и которые достаточно легко устранить.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c