Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1316510544
LDV
2011-09-20 13:22
2012.01.01
игнорировать дубликаты при insert -запросе


2-1316618998
Мемоза
2011-09-21 19:29
2012.01.01
Как написать на Дельфи эмулятор игровой приставки NES?


15-1316092006
Железкин
2011-09-15 17:06
2012.01.01
не включается комп, может кто сталкивался?


2-1316788939
Litt
2011-09-23 18:42
2012.01.01
CM_MOUSEENTER


2-1316610955
Псарь
2011-09-21 17:15
2012.01.01
Мерцает окно при изменении размеров.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский