Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Цветовая палитра Delphi


Автор: Albinos_x 14.7.2006, 15:19
После установки некоторых компанентов некоторые цвета изиенили своё значение... к примеру SkyBlue стал практически белым.... 

Вопрос: как восстановить или хотя бы изменить отдельные?

Заранее СПАСИБО! smile  

Автор: Alexeis 14.7.2006, 15:23
А вот это уже странно...
Если
Код

clWindow = TColor(clSystemColor or COLOR_WINDOW);

может менятся, то
Код

clSkyBlue = TColor($F0CAA6);

Задан жестко и не зависит ни от чего!  

Автор: Snowy 14.7.2006, 15:24
Это невозможно.
Это константа из модуля Graphics = $F0CAA6
Даже не системная, а жёстко прописанная.
Дело явно не в этом. 

Автор: Albinos_x 14.7.2006, 15:40
да кстати забыл отметить... :

подобная ерунда наблюдается у меня и на компе и на ноуте... 
на старые проекты создаваемые до изменений это никак не повлияло... они попрежнему нормальные... даже при перекомпилировании... а вот при попытке создании новых или изменении старых всё "кривого" цвета... 

Автор: Snowy 14.7.2006, 15:44
Найди модуль Graphics.pas и проверь значение цвета clSkyBlue.
Должен быть $F0CAA6.
Если нет - восстанови с инсталляшки.
Если да, то вспоминай, что ставил... 

Автор: Albinos_x 14.7.2006, 15:57
там соответствует...

а ставил сразу несколько пакетов:
TMS, Rx, LMD, Raize... 

Автор: Alexeis 14.7.2006, 16:00
Если эти константы переопределены в модуле который идет перед graphics, то компилятор будет их юзать... 

Автор: Albinos_x 14.7.2006, 16:07
если задавать цвет из кода, то вроде бы проблем нет...

пока наблюдаю такое из инспектора объектов... 

Автор: Alexeis 14.7.2006, 16:17
Цитата(Albinos_x @  14.7.2006,  16:07 Найти цитируемый пост)
если задавать цвет из кода, то вроде бы проблем нет...

А если переопределить эти константы, в коде своего модуля? 

Автор: Albinos_x 14.7.2006, 16:30
Цитата(alexeis1 @  14.7.2006,  16:17 Найти цитируемый пост)
А если переопределить эти константы, в коде своего модуля? 

это не поможет...

думаю проблема в том, что при установке этих компонент какая-то Длл-ка, которыми пользуется инспектор объектов, была заменена....  

Автор: Alexeis 14.7.2006, 16:43
А если посмотреть в код dfm, то видно что object inspector здесь ни при чем 
Цитата

object Form1: TForm1
  Left = 229
  Top = 123
  Width = 544
  Height = 375
  Caption = 'Form1'
  Color = clSkyBlue


Добавлено @ 16:47 
Смотрим ресурс откомпелированного Exe раздел rcData -> TFORM!
Цитата

object Form1: TForm1
  Left = 229
  Top = 123
  Width = 544
  Height = 375
  Caption = 'Form1'
  Color = clSkyBlue
......................
 

Автор: Yanis 14.7.2006, 16:47
Выложи скрин окна после этого кода:
Код
procedure TForm1.Button1Click(Sender: TObject);
begin
  Color := clSkyBlue;
end;
 

Автор: Alexeis 14.7.2006, 16:49
т.о. object inspector своего ничего не превносит, чтобы до конца в этом убедится предлагаю скомпилировать проект при помощи DCC32.exe 

Автор: Albinos_x 14.7.2006, 16:54
ну тык в инспекторе я тоже выбираю Color = clSkyBlue, а цвет белый устанавливается, если clCream, то коричневым... и т.д. 

а вот если я пишу в FormCreate установку цвета, то все цвета нормальные... 

Автор: Yanis 14.7.2006, 17:01
Цитата(Albinos_x @  14.7.2006,  17:54 Найти цитируемый пост)
а вот если я пишу в FormCreate установку цвета, то все цвета нормальные...  

А если в инспекторе объектов вместо clSkyBlue написать $F0CAA6?

Добавлено @ 17:04 
Если цвет будет будет оригинальным для clSkyBlue, то это значит что где то константа clSkyBlue подменена. Проверь чему она равна в Graphics.pas, а лучше поищи (delphi masin menu Search -> Find in files...) модули в которых встречается константа clSkyBlue. Таким образом ты сразу найдёшь где переопределена "левая" константа.  

Автор: Alexeis 14.7.2006, 17:08
Yanis, 
Цитата(Yanis @  14.7.2006,  17:01 Найти цитируемый пост)
ты сразу найдёшь где переопределена "левая" константа. 

Это было бы так если бы делфи компелировал заново все модули, а так он же код берет из заранее скомпелированых dcu-шек. В этом смысле порть не порть оригинальный модуль результат будет без изменений! 

Автор: Yanis 14.7.2006, 17:10
alexeis1
Может быть подключаются сторонние модули.  

Автор: Alexeis 14.7.2006, 17:40
Еще возможно еще такое, если один из сторонних компонентов хранит в одной из своих папочек кривой graphics.dcu - то он включится в exe вместо стандартного. 

Автор: Albinos_x 15.7.2006, 14:32
Цитата(Yanis @  14.7.2006,  17:01 Найти цитируемый пост)
А если в инспекторе объектов вместо clSkyBlue написать $F0CAA6?

в этом случае всё нормально...
Цитата(Yanis @  14.7.2006,  17:01 Найти цитируемый пост)
Проверь чему она равна в Graphics.pas


Цитата(Albinos_x @  14.7.2006,  15:57 Найти цитируемый пост)
там соответствует...

 

Автор: Mechanic 16.7.2006, 20:12
Если это происходит только в обжект инспекторе, то может быть заменена в %Delphi%\lib\DsgnIntf.dcu, ведь по-идее, сама IDE должна делать регистрацию своих стандартных проперти-едиторов типа того
Код

RegisterPropertyEditor(TypeInfo(TColor), nil, '', TColorProperty);


Никогда сам не дибажил встроенный в IDE property editor, только юзал сторонние, но чую, что трабла именно в том, что какой-то из компонент-паков, добавил свои типы объектов вместе с соответствующими редакторами пропертей.

Имхо, единственный путь выяснить, так это пробежаться по Register секциям всех установленных до глюка компонентов в поисках вызова указанной выше процедуры регистрации нового property editora для TypeInfo(TColor), т.к. очевидно, что именно редактор и глючит.

А проверить нарушение константы элементарно
Код

Gluck: boolean = clSkyBlue <> TColor($F0CAA6);
  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)