Forum > Portuguese

Como pintar o BitBtn com Gradiente (Degradê)

(1/1)

TeoUrbana:
Olá pessoal, será que alguém pode me ajudar e postar um código para que possa acrescentar num descendente do BitBtn, onde possamos fazer um Gradiente na cor de fundo, escolhendo a cor final e inicial?

Eu achei os BGRAComponents, e são ótimos, exceto pelo fato de não receberem foco, ou seja, não consigo navegar por eles utilizando o tab ou Sifht+tab, o que pra mim é uma pequena falha.

Então, será que alguém tem um código de degradê para o BitBtn?  :D

valdir.marcos:

--- Quote from: TeoUrbana on September 20, 2018, 03:50:58 pm ---Olá pessoal, será que alguém pode me ajudar e postar um código para que possa acrescentar num descendente do BitBtn, onde possamos fazer um Gradiente na cor de fundo, escolhendo a cor final e inicial?

Eu achei os BGRAComponents, e são ótimos, exceto pelo fato de não receberem foco, ou seja, não consigo navegar por eles utilizando o tab ou Sifht+tab, o que pra mim é uma pequena falha.

Então, será que alguém tem um código de degradê para o BitBtn?  :D
--- End quote ---
Se você estiver usando Windows, veja que TButton e TBitBtn não permitem a mudança de cor de fundo por causa das regras de tema do Windows.
O que você poderia fazer é mudar a aparência de um TPanel para se parecer com um botão.


--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---unit Unit1; {$mode objfpc}{$H+} interface uses  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,  Buttons, StdCtrls; type   { TForm1 }   TForm1 = class(TForm)    BitBtn1: TBitBtn;    Button1: TButton;    Panel1: TPanel;    procedure BitBtn1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);    procedure FormCreate(Sender: TObject);    procedure Panel1Click(Sender: TObject);    procedure Panel1Enter(Sender: TObject);    procedure Panel1Exit(Sender: TObject);  private   public   end; var  Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject);begin  Panel1.Color  := clRed;  Button1.Color := clRed;  BitBtn1.Color := clRed;end; procedure TForm1.Button1Click(Sender: TObject);begin  Panel1.SetFocus;end; procedure TForm1.BitBtn1Click(Sender: TObject);begin  Button1.SetFocus;end; procedure TForm1.Panel1Click(Sender: TObject);begin  ShowMessage('Teste de clique.');end; procedure TForm1.Panel1Enter(Sender: TObject);begin  Panel1.Color  := clYellow;end; procedure TForm1.Panel1Exit(Sender: TObject);begin  Panel1.Color  := clGreen;end; end.

valdir.marcos:

--- Quote from: valdir.marcos on September 20, 2018, 04:21:31 pm ---O que você poderia fazer é mudar a aparência de um TPanel para se parecer com um botão.
--- End quote ---
Aqui tem uma discussão bem detalhada de uma possível solução degradê para TPanel.
https://www.developpez.net/forums/d481267/environnements-developpement/delphi/composants-vcl/degrade-couleurs-tpanel/

elender:

--- Quote from: TeoUrbana on September 20, 2018, 03:50:58 pm ---Se você estiver usando Windows, veja que TButton e TBitBtn não permitem a mudança de cor de fundo por causa das regras de tema do Windows.
O que você poderia fazer é mudar a aparência de um TPanel para se parecer com um botão.

--- End quote ---
Não há nenhuma forma de burlar isso? Por exemplo colocar uma imagem como fundo do botão?

lainz:
There is BGRAControls TBCButtonFocus that accepts tab key, but you need to paint the focus rect, since is only implemented the tab functionality but not the styling of the focus rect, but there is a method to draw it, there is an example in the bgracontrols test folder.

Navigation

[0] Message Index

Go to full version