Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

По поводу черного цвета вместо системного


BeZ ©   (2006-01-21 00:41:00) 

вот заметил такую вещь:
если для контрола выбрать системный цвет, то после компиляции в приложении контрол имеет не системный цвет, а черный... в какой то теме (кажется) было уже такое

если в опциях проекта выставить PAS_VERSION, то все работает, т.е. если для контрола выбираем системный цвет, то он таким и будет, но не черным

если в опциях проекта поставить ASM_VERSION или убрать PAS_VERSION (останется только KOL_MCK), то системный цвет превращается в черный

причем, есть стоит опция PAS_VERSION, то размер ехе файла будет на ~10 Кб больше чем с ASM_VERSION

версия KOL\MCK 2.31


homm   (2006-02-08 10:50:00) [1]

Что-то BeZне видно. Может кто-то другой скачает проект http://www.homm86.narod.ru/files/nor4.rarи посмотрит в Delphi7 под ASM_VERSION?


homm   (2006-01-25 07:47:00) [2]


> угу, Delphi7 с первым апдейтом
> попробовал, скомпилил, загрузилось приложение с кнопкой
> цвета clBtnFace и цыетом формы clLime. При нажатии на кнопку
> цвет формы изменился на clBtnFace
Идем дальше. Скачай и прогони еще раз. Не забудь про ASM_VERSION.


Thaddy   (2006-01-23 11:43:00) [3]

Coorection, ofcourse you should use the API (from win32.hlp and in windows.pas) constants, not the Delphi constants:

aControl.Color:=GetSysColor(COLOR_BTNFACE);


Thaddy   (2006-01-23 11:34:00) [4]

If you get the black color (happens with more code, not only kol, not even only delphi!) this small trick always works:
Instead of assigning a color like:

aControl.color:=clBtnFace;


Assign the color through the API GetSysColor, like:

aControl.Color:=GetSysColor(clBtnFace);

This fixes some problems with the indexed system colors in some resolutions, because it translates it from the index to the actual RGB value, including transparency. Always works!


BeZ   (2006-01-23 00:01:00) [5]

если GRushStyles.DefPaintStyles.ColorFrom <> GRushStyles.DefPaintStyles.ColorTo то все рисуется как надо
а вот мне кажется что очень здорово, когда эти два свойства имеют один цвет... кнопка становиться плоской и не выделяется от других контроловЮ а когда наведешь на нее, то она становиться красивой, хотя кому как :)


BeZ   (2006-01-22 23:59:00) [6]

> Попробуй этот элементарный пример под Delphi7 ...(
угу, Delphi7 с первым апдейтом
попробовал, скомпилил, загрузилось приложение с кнопкой цвета clBtnFace и цыетом формы clLime. При нажатии на кнопку цвет формы изменился на clBtnFace

надо бы уточнять в таких случаях, что за контрол.
ну в [2] я уточнил что за контролы :)


homm   (2006-01-21 13:29:00) [7]

Попробуй этот элементарный пример под Delphi7 (я так понял что у тебя именно она, т.к. в 5 и 6 все впорядке). http://www.homm86.narod.ru/files/nor4.rar
Просто с определенной увереностью могу предположить что если GRushStyles.DefPaintStyles.ColorFrom <> GRushStyles.DefPaintStyles.ColorTo то все рисуется как надо, вот и получается что виноваты вот эти две строки:
           Brush.Color := State.ColorFrom;
           FillRect(BorderRect);


А вообще
> если для контрола выбрать системный цвет, то после компиляции
> в приложении контрол имеет не системный цвет, а черный..
надо бы уточнять в таких случаях, что за контрол.


BeZ   (2006-01-21 12:14:00) [8]

To Homm

Вообщем сделал два тестовых пакета:
 TestKOL - ASM_VERSION;
 TestKOL_2 - PAS_VERSION;

поглядеть можно http://p2ktools.nm.ru/Black.rar                                                     
на форму бросил EditBox и GRushButton
для EditBox.Color выставил clBtnFace
для GRushButton выставил
 GRushStyles.DefPaintStyles.ColorFrom = clBtnFace
 GRushStyles.DefPaintStyles.ColorTo = clBtnFace

вообщем EditBox ведет себя нормально
а вот твоя GRushButton - нет:
если ASM_VERSION, то кнопка черная в обычном состоянии
если PAS_VERSION, то кнопка системного цвета clBtnFace

Может тогда это в твой адрес замечание?
Погляди, если не сложно, а то я активно юзаю твои GRush контролы


homm   (2006-01-21 08:48:00) [9]


> если для контрола выбрать системный цвет, то после компиляции
> в приложении контрол имеет не системный цвет, а черный...
Проект, где этот глюк появляется на мыло Владимиру. Неплохо бы еще версию дельфи указать. Может Themes  в приложении используется или прозрачность (вместе их со стандартными контроломи использвать нельзя).


> причем, есть стоит опция PAS_VERSION, то размер ехе файла
> будет на ~10 Кб больше чем с ASM_VERSION
Дак затем и нужна ASM_VERSION, что Дельфийский компилятор не может рационально транслировать текст программы (а иногда и потенциально нет такой возможности) в машиный код.


Наверх

Титульная страница Поиск, карта сайта Написать письмо