![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить цвет кнопок, меню, скроллинга? [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, помоему там все это есть