C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Цвет кнопок
Konstantine
Отправлено: 25.07.2005, 13:09


Мастер участка

Группа: Модератор
Сообщений: 545



ну теперь и я чего-то спрошу....
как изменить в приложении цвет кнопок со стандартной схемы, на тот который Я ХОТЮ...
интересуют компоненты:
- кнопка с картинкой (TBitBtn, TSpeedButton или аналоги)
- TDBLookupComboBox (не поле, а цвет кнопочки для списка)
- TDBNavigator

Отредактировано Konstantine — 25/07/2005, 13:37
Gedeon
Отправлено: 25.07.2005, 15:10


Ветеран

Группа: Модератор
Сообщений: 1742



ИМХО Никак, только искать сторонние компоненты.
timson
Отправлено: 25.07.2005, 17:01


Станционный диспетчер

Группа: Участник
Сообщений: 82



можно.. можно все — надо лишь желание, время..

придется самому рисовать, подругому никак — например перехватом сообщения WM_PAINT...
Rius
Отправлено: 25.07.2005, 17:24


Мастер участка

Группа: Участник
Сообщений: 321



Действительно больше никак.

User Attached Image Скачать файл
ColorButton.pas


Konstantine
Отправлено: 25.07.2005, 17:28


Мастер участка

Группа: Модератор
Сообщений: 545



хренова sad.gif
Rius
Отправлено: 25.07.2005, 18:12


Мастер участка

Группа: Участник
Сообщений: 321



Зато появляется возможность прорисовать стили XP, даже отличные от выбранной темы.
user posted image
GIZMO
Отправлено: 25.07.2005, 22:21


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (timson @ 25/07/2005, 17:01)
можно.. можно все — надо лишь желание, время..

придется самому рисовать, подругому никак — например перехватом сообщения WM_PAINT...

А для TBitBtn это будет — перехватом WM_DRAWITEM.
Konstantine
Отправлено: 26.07.2005, 14:04


Мастер участка

Группа: Модератор
Сообщений: 545



мдя... жуть, ну знач ну его... буду TBitBtn? на него картинку на всю кнопку и всё...
** Harold
Отправлено: 27.07.2005, 10:27


Не зарегистрирован







А можно вместо Button'a использовать Panel — крась не хочу. А если bevel'ом поиграть при MouseClick'e, то получается кнопка один в один. Приделай к ней ImageList и меняй картинки как хочешь. И т.д.
Rius
Отправлено: 27.07.2005, 16:01


Мастер участка

Группа: Участник
Сообщений: 321



imho нерационально, panel может содержать другие компоненты и имеет кучу ненужных свойств.
button кстати очень легко красится

а вот ImageList приделывать..... как там ImageIndex подключить, никто не знает.

QUOTE
TBitBtn? на него картинку на всю кнопку и всё...
некрасиво, уже пробовал

Отредактировано Rius — 27/07/2005, 19:02
** Harold
Отправлено: 27.07.2005, 20:12


Не зарегистрирован







Я не знаю, как правильно, но "водятлы" не стесняются руководить действиями компилятора так -
CODE

//---кладем на предложенный ранее Panel компонент Image и как-нибудь его обзываем, например...
ImageCoolingWaterManometr

//---вставляем картинки в невизуальный компонент ImageList имени, например, ImageListManometrState
...ну, к ImageList'у картинки заранее щелчками мышки "приделываются"...

//----почитав литературу, изображаем "самое сложное":
void __fastcall TForm1::ChangeCoolingWaterManometrState(int iCoolingWaterManometrState)
{
TCanvas *CoolingWaterManometrCanvas = ImageCoolingWaterManometr->Canvas;
ImageListManometrState->Draw(CoolingWaterManometrCanvas, 0, 0, iCoolingWaterManometrState, true);
ImageCoolingWaterManometr->Invalidate();
}

//---когда захотелось сменить картинку, вызываем
ChangeCoolingWaterManometrState(0);// 0,1,2,3... номер картинки в ImageList'e имени ImageListManometrState

//---вот и всё...


Толковые коллеги, наверное, могут этот бред в виде класса организовать в купе с OnРаnelMouseClick и проверкой, что Panel уже Clicked или нет. С соответствующим изменением Bevel'a у Panel'a...
PS. Я, наверное, не понимаю, зачем еще Builder (кроме простоты и доступности) нужен. Но, работает же...
timson
Отправлено: 28.07.2005, 07:57


Станционный диспетчер

Группа: Участник
Сообщений: 82



у контрола button есть одно свойство — фокус!!!! а Panel этим не обладает...
** Harold
Отправлено: 28.07.2005, 09:14


Не зарегистрирован







Panel1->Focused(); — из код-инсайт менюшки, однако...
Ну, да бог с ним...
Konstantine
Отправлено: 28.07.2005, 17:13


Мастер участка

Группа: Модератор
Сообщений: 545



Мне фокус не нужен, даже наоборот — мешает
** Harold
Отправлено: 28.07.2005, 22:05


Не зарегистрирован







так панельки и не фокусируются, если не "тереть" нигде специально...

Вернуться в Вопросы программирования в C++Builder