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

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

Как изменить цвет кнопок, меню, скроллинга? [D5, Win2k]


doroshka ©   (2002-07-12 10:34:00) 

Господа, подскажите пожалуйста, как изменить цвет кнопок, меню, скроллинга, закладок PageControl-а и т.п. В общем тех контролов, у которых нет явного свойста Color и/или ParentColor и которые используют цвет, который для них установлен в системе.
Спасибо.


Юрий Зотов   (2002-07-13 23:03:00) [1]

Эти цвета - системные установки юзера. Следовательно, Вы должны либо менять эти установки (что отразится на ВСЕХ программах и вряд кто-то Вам скажет за это спасибо - скорее, Вашей программой просто не будут пользоваться), либо рисовать свои контролы ручками.

Первое делается вызовом SetSysColors (но не советую), а второе - обработкой WM_ERASEBKGND, WM_NCPAINT и WM_PAINT (но придется капитально попотеть).

Некоторые контролы из ComCtl32 поддерживают режим CustomDraw, когда параметры перерисовки запрашиваются посылкой сообщений WM_NOTIFY. Это попроще, чем рисовать самому, но тоже не сахар (детали см. в MSDN, больше, наверное, негде). Наконец, некоторые контролы (и соответствующие им компоненты Delphi) поддерживают свойство OwnerDraw и тоже позволяют настраивать перерисовку программно, вплоть до полного рисования самому (детали см. в справке Delphi).

Вот и все, ничего другого нет. Готовые компоненты именно так и работают.


Fissher   (2002-07-13 22:27:00) [2]

Мне это тоже до ж..ы нужно! Раз кто-то пишет компоненты - значит есть способ, но как ??????????????


Anatoly Podgoretsky   (2002-07-13 20:34:00) [3]

doroshka (13.07.02 20:05)
Так я тебе и советую этот путь с посторонними компонентами, но у тебя странное представление об пользователе, особенно об пользователе WinXP с его темами.
Но это все таки твое дело, решать как твое приложение должно выглядеть, тут ты прав.


doroshka   (2002-07-13 20:13:00) [4]

Извиняюсь за оффтопик, но вот интересная ссылка по теме ;)

http://www.delphikingdom.com/asp/answer.asp?IDAnswer=9852


doroshka   (2002-07-13 20:05:00) [5]

=> Anatoly Podgoretsky

Извините, но я не спрашиваю, стоит мне туда лезть или не стоит, вероятно стоит, иначе бы не спрашивал ;). Я хочу написать полностью настраиваемое приложение, которое пользователь сможет раскрасить как захочет, не трогая при этом системные установки.

Использовать сторонние компоненты... Скорее всего так и будет, но ведь эти компоненты кто-то пишет, значит сделать это (изменить цвета) - возможно. Я надеялся что есть легкий способ. Вот например поменять цвет ProgressBar-a оказалось очень просто

SendMessage(ProgressBar1.Handle, WM_USER+9, 0, clBlack);

для других компонент - пока не нашел, возможно и не найду.

Раз уже столкнулся с проблемой, так хочется решить ее! :))

Так как насчет подмены стандартных цветов типа clBtnFace, clSilver своими значениями на этапе, скажем, загрузки приложения? Есть идеи? Или я тут в корне не прав и этого сделать невозможно?
Спасибо.


Anatoly Podgoretsky   (2002-07-13 11:35:00) [6]

Если речь про системные то это прерогатива пользователя и не дело лезть туда грязными руками, хочется молочка, то не надо использовать системные, а использовать пользовательские компоненты, их в Инете уйма.


Новенький в Делфи   (2002-07-13 11:16:00) [7]

Все эти компоненты (почти все, не суть важно) имеют цвет clBtnFace
0ни имеют цвет, который назначен в твоих установках (хотя действительно это чаще всего clSilver насколько я помню).

Я скролл бары ресую сам.


doroshka   (2002-07-13 10:40:00) [8]

Спасибо, за участие :)
Я вот что подумал... Все эти компоненты (почти все, не суть важно) имеют цвет clBtnFace, может можно как-то при запуске приложения переопределить эту константу? Это решит все мои проблемы.


BAY   (2002-07-12 19:47:00) [9]

>> В какие Properties? Там такого нету и мне кажется, что вопрос действительно интересный..

Извиняюсь. Действительно нет :(


Eugene Lachinov   (2002-07-12 16:00:00) [10]

В Borland не жадные, дают и другим на хлеб заработать :)


Гас   (2002-07-12 15:57:00) [11]

Мда.. А в Borland не могли такого сделать?.. :(


Skier   (2002-07-12 15:26:00) [12]

Про кнопки здесь :
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025854328&n=0


Eugene Lachinov   (2002-07-12 15:23:00) [13]

Легких путей нет, надо отрабатывать отрисовку самим или брать компоненты где такая возможность есть.


Гас   (2002-07-12 15:14:00) [14]

В какие Properties? Там такого нету и мне кажется, что вопрос действительно интересный..


BAY   (2002-07-12 10:38:00) [15]

загляни в Properties, помоему там все это есть


Наверх

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