Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как при нажати на кнопку из менить её цвет


Автор: Ярослав 20.6.2009, 15:14
Подскажите пожалуйста как при  нажатие на кнопку изменить её цвет или при наведение мышки тоже действие

Автор: BeKToP 20.6.2009, 15:19
у кнопки есть события (инспектор обьектов вкладка events), там есть события OnClick и OnMove , нажатие и наведение мышки соответственно, на эти события надо написать что то типа
Код

Button1->Color=clGreen;

хотя нет :( чё то я не знал что у Button нет сво-ва color

Автор: JackyFox 25.6.2009, 14:26
Погуглил тут немного, и оказалось, что MS в принципе не позволяет менять цвет кнопки в API.
Некоторые изворачиваются, создают новый класс на основе TButton с канвой. Вот http://delphi-faq.zoxt.net/1546.htm.

Я предлагаю использовать TPanel. При желании её можно сделать похожей на кнопку, не совсем идентично, но довольно схоже.

Надо задать свойство BevelInner при проектировании в bvRaised и написать обработчики для MouseDown и MouseUp, чтобы панель вела себя как кнопка при нажатии.

Код

void __fastcall TForm1::Panel1MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    // Какбе кнопка делается вдавленой
    Panel1->BevelInner = bvLowered;
}


Код

void __fastcall TForm1::Panel1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
    // Какбе кнопка делается приподнятой
    Panel1->BevelInner = bvRaised;
}


Свойство Color у панели есть. Так что уже его можно ворочать как хочется методами Click, MouseEnter и MouseLeave

Автор: DonPager 25.6.2009, 15:24
Ещё как вариант:

у стандартных батонов (CodeGear) есть такое свойство как HotImagesIndex. привязывай к кнопе ImageList и играйся с этим св-вом по нужным событиям

Автор: Ярослав 25.6.2009, 23:50
Спасибо,всё работает

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