Как кнопку сделать другого цвета

Закрыть ... [X]

revendell
Member
Откуда: Волгоград
Сообщений: 139
Всем привет.Может кто знает как поменять цвет кнопки программно?
Мимопроходящий
Member
Откуда: бурятский тундрюк, эсквайр
Сообщений: 28399

Привет, revendell!
Ты пишешь:
revendell
r> Всем привет.Может кто знает как поменять цвет кнопки программно?
все знают.
а как не получается?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4

revendell
Member
Откуда: Волгоград
Сообщений: 139
блин у нее же нет свойства color
Кроик Семён
Member
Откуда: СПб --> Dortmund
Сообщений: 5981
JEDI VCL --> вкладка JvButtons --> TJvSpeedButton.Color:=
SNike
Member
Откуда:
Сообщений: 392
revendell
блин у нее же нет свойства color

Зато есть Brush
revendell
Member
Откуда: Волгоград
Сообщений: 139
Надо у обычной кнопки,не используя сторонних компонентов
Кроик Семён
Member
Откуда: СПб --> Dortmund
Сообщений: 5981
P.S.
или TJvImgBtn.Color:=...
alex0
Member
Откуда: 127.0.0.1
Сообщений: 7205
revendell
Надо у обычной кнопки,не используя сторонних компонентов

Обчная кнопка это что-то вроде обычного стирального порошка? Видимо это либо TSpeedButton либо TBitBtn поскольку и та и другая входят в стандартную палитру компонент Delphi.
Кроик Семён
Member
Откуда: СПб --> Dortmund
Сообщений: 5981
Состряпал небольшой класс на основе стандартного TButton-
Есть один баг - не знаю, какое событие (не WM_PAINT !!!) отвечает за отрисовку, когда фокус на кнопке. //пример использования procedure TForm1.FormCreate(Sender: TObject); var NewButton : TColoredButton; begin NewButton:=TColoredButton.Create(Self); NewButton.Parent:=Panel4; NewButton.Color:=clYellow; NewButton.Caption:='Colored'; end; //и сам класс type TColoredButton=class(TButton) private FCanvas : TControlCanvas; FColor: TColor; procedure SetColor(const Value: TColor); procedure Draw(); procedure WMPaint(var Message: TWMPaint); message WM_PAINT; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published property Color: TColor read FColor write SetColor; end; //----------------------- constructor TColoredButton.Create(AOwner: TComponent); begin inherited; FColor:=clBtnFace; FCanvas:=TControlCanvas.Create(); FCanvas.Control:=Self; end; //----------------------- destructor TColoredButton.Destroy(); begin FCanvas.Free(); inherited; end; //----------------------- procedure TColoredButton.SetColor(const Value: TColor); begin FColor := Value; Invalidate(); end; //----------------------- procedure TColoredButton.Draw(); begin FCanvas.Brush.Color:=FColor; FCanvas.Brush.Style:=bsSolid; FCanvas.FillRect(Rect(2,2,Width-3,Height-3)); FCanvas.Pen.Color:=clBlack; FCanvas.TextOut((Width-FCanvas.TextWidth(Caption)) div 2, (Height-FCanvas.TextHeight(Caption)) div 2, Caption); end; //----------------------- procedure TColoredButton.WMPaint(var Message: TWMPaint); begin inherited; Draw(); end;
К сообщению приложен файл. Размер - 0Kb
Кроик Семён
Member
Откуда: СПб --> Dortmund
Сообщений: 5981
придумал еще один способ
Можно создать картинку, содержащую фон кнопки нужного цвета, написать на ней текст и засунуть в кнопку. //Вызов //(вызывать только один раз, т.к. со второго раза свойство Caption='' ) SetButtonColor(BitBtn1, clYellow); procedure SetButtonColor(ABitBtn: TBitBtn; AColor: TColor); var Bmp : Graphics.TBitmap; begin Bmp:=TBitmap.Create(); try Bmp.Width:=ABitBtn.Width; Bmp.Height:=ABitBtn.Height; Bmp.Canvas.Font.Assign(ABitBtn.Font); //закрашиваем картинку нужным цветом Bmp.Canvas.Brush.Color:=AColor; Bmp.Canvas.Brush.Style:=bsSolid; Bmp.Canvas.FillRect(Rect(0,0,Bmp.Width,Bmp.Height)); //по периметру квадрат другого цвета Bmp.Canvas.Pen.Color:=not AColor; Bmp.Canvas.Rectangle(0,0,Bmp.Width, Bmp.Height); //выводим цвет в середине Bmp.Canvas.Pen.Color:=ABitBtn.Font.Color; Bmp.Canvas.TextOut( (Bmp.Width-Bmp.Canvas.TextWidth(ABitBtn.Caption)) div 2, (Bmp.Height-Bmp.Canvas.TextHeight(ABitBtn.Caption)) div 2, ABitBtn.Caption); //чтобы на кнопке не было ничего лишнего - уничтожаем старый Caption ABitBtn.Caption:=''; //<<<<< //кладем на кнопку ABitBtn.Glyph.Assign(Bmp); finally Bmp.Free(); end; end;
Виртуальные форумы   Темы из всех форумов за 3 дня   Мои избранные форумы Использование СУБД   Microsoft SQL Server   Firebird, InterBase   Oracle   Microsoft Access   IBM DB2, WebSphere, IMS, U2, etc   MySQL   PostgreSQL   OLAP и DWH   Sybase ASA, ASE, IQ   Informix   Другие СУБД   FoxPro, Visual FoxPro   Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M   SQLite   NoSQL, Big Data Дискуcсии   Сравнение СУБД   Проектирование БД   Работа   ERP и учетные системы   Разработка информационных систем   Тестирование и QA   Отчетные системы   Просто треп   Наши за рубежом   Сертификация и обучение   Hardware   Управление процессом разработки ИС   Юридические вопросы в ИТ Microsoft.NET   WinForms, .Net Framework   ASP.NET   ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM   WPF, Silverlight   WCF, Web Services, Remoting Программирование   Delphi   C++   Visual Basic   Программирование   Java   Разработка под мобильные платформы   PowerBuilder   Microsoft Office   SharePoint   XML, XSL, XPath, XQuery Web Технологии   PHP, Perl, Python   HTML, JavaScript, VBScript, CSS Администрирование ОС   Windows   Unix-системы   Другие: Mac OS, PalmOS, BeOS, PocketPC SQL.RU   Обсуждение нашего сайта   Вопрос-Ответ   Test


Поделись с друзьями



Рекомендуем посмотреть ещё:



Сделать кнопку другого цвета при полных полях - Javascript-форум Как сделать воздушную трубу

Как кнопку сделать другого цвета Как кнопку сделать другого цвета Как кнопку сделать другого цвета Как кнопку сделать другого цвета Как кнопку сделать другого цвета Как кнопку сделать другого цвета Как кнопку сделать другого цвета Как кнопку сделать другого цвета

ШОКИРУЮЩИЕ НОВОСТИ