Recent

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

TeoUrbana

  • New member
  • *
  • Posts: 17
    • 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: 544
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: 544
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/