Recent

Author Topic: Como pintar o BitBtn com Gradiente (Degradê)  (Read 2224 times)

TeoUrbana

  • New Member
  • *
  • Posts: 23
    • Distração For Fun
Como pintar o BitBtn com Gradiente (Degradê)
« 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

valdir.marcos

  • Hero Member
  • *****
  • Posts: 855
Re: Como pintar o BitBtn com Gradiente (Degradê)
« Reply #1 on: September 20, 2018, 04:21:31 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
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  [Select]
  1. unit Unit1;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  9.   Buttons, StdCtrls;
  10.  
  11. type
  12.  
  13.   { TForm1 }
  14.  
  15.   TForm1 = class(TForm)
  16.     BitBtn1: TBitBtn;
  17.     Button1: TButton;
  18.     Panel1: TPanel;
  19.     procedure BitBtn1Click(Sender: TObject);
  20.     procedure Button1Click(Sender: TObject);
  21.     procedure FormCreate(Sender: TObject);
  22.     procedure Panel1Click(Sender: TObject);
  23.     procedure Panel1Enter(Sender: TObject);
  24.     procedure Panel1Exit(Sender: TObject);
  25.   private
  26.  
  27.   public
  28.  
  29.   end;
  30.  
  31. var
  32.   Form1: TForm1;
  33.  
  34. implementation
  35.  
  36. {$R *.lfm}
  37.  
  38. { TForm1 }
  39.  
  40. procedure TForm1.FormCreate(Sender: TObject);
  41. begin
  42.   Panel1.Color  := clRed;
  43.   Button1.Color := clRed;
  44.   BitBtn1.Color := clRed;
  45. end;
  46.  
  47. procedure TForm1.Button1Click(Sender: TObject);
  48. begin
  49.   Panel1.SetFocus;
  50. end;
  51.  
  52. procedure TForm1.BitBtn1Click(Sender: TObject);
  53. begin
  54.   Button1.SetFocus;
  55. end;
  56.  
  57. procedure TForm1.Panel1Click(Sender: TObject);
  58. begin
  59.   ShowMessage('Teste de clique.');
  60. end;
  61.  
  62. procedure TForm1.Panel1Enter(Sender: TObject);
  63. begin
  64.   Panel1.Color  := clYellow;
  65. end;
  66.  
  67. procedure TForm1.Panel1Exit(Sender: TObject);
  68. begin
  69.   Panel1.Color  := clGreen;
  70. end;
  71.  
  72. end.

valdir.marcos

  • Hero Member
  • *****
  • Posts: 855
Re: Como pintar o BitBtn com Gradiente (Degradê)
« Reply #2 on: September 20, 2018, 04:37:27 pm »
O que você poderia fazer é mudar a aparência de um TPanel para se parecer com um botão.
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

  • New Member
  • *
  • Posts: 26
Re: Como pintar o BitBtn com Gradiente (Degradê)
« Reply #3 on: July 12, 2019, 11:24:25 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.
Não há nenhuma forma de burlar isso? Por exemplo colocar uma imagem como fundo do botão?

lainz

  • Hero Member
  • *****
  • Posts: 3313
    • Lainz
Re: Como pintar o BitBtn com Gradiente (Degradê)
« Reply #4 on: July 12, 2019, 11:48:39 pm »
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.