Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Interagir dialog color com o btn


hunter2017

Pergunta

Olá amigos programadores em delphi, estou tentando interagir um dialog color para mudar a cor do botão usando esse componente de cores, funcinona assim , mas quando passo o mouse por cima do botão ele muda a cor para outra que é a cor padrão definida no object inspector do btn, outra dúvida também é como passar esses valores de cor escolhida para os items do combobox para que fiquem com as cores escolhidas através do botão.

procedure TForm1.btncorClick(Sender: TObject);

begin
 if dlgcolor1.Execute then
 begin
    btncor.color := dlgcolor1.Color;
 end;
end;

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

Qual é a versão do delphi que voce esta usando, onde  o componente ( bitbtn ou button ) tem a propriedade color ?

OBS: o que voce pode fazer é criar um botão com essa propriedade

exemplo: Componente Bitbtn colorido

http://delphiworld.narod.ru/base/colour_button.html

outro código fonte

http://kazus.ru/nuke/modules/Downloads/pub/72/0/ColorBtnExample.zip

outros componentes de botões

http://www.edudelphipage.com.br/componentes_downloads.php?categoria=5

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Link para o comentário
Compartilhar em outros sites

  • 0

Esse posts não me ajudaram,  não é isso que  eu quero, veja bem, o tcolorbox tem cores prontas, eu quero que o usuário escolha a cor que desejar, por isso criei o botão para  a escolha dessa cor, a cor escolhida será a mesma dos items armazenados no combobox. Se eu estou pedindo ajuda aqui é porque já vasculhei todos os outros fóruns, eu tento fazer, não sou como novatos que chega e pede os comandos prontos, se você sabe fazer, me passe o comando porque antes de abrir um post eu tento fazer de todas as formas.

Editado por hunter2017
Link para o comentário
Compartilhar em outros sites

  • 0

já que voce gosta de desafios, vou postar a lógica e voce tenta resolver ... ok ?

primeiro vou passar o basico:

( ou seja, voce deve jogar a cor do ColorDialog1 para o Combobox e o código da cor e a cor devem ser mostradas nele )

1 - Combobox trabalha com indices [ index ]  começando com 0 ( zero )

2 - ColorDialog1 tem a propriedade Color ( classe TColor )

3 - O  Combobox só aceita strings, portanto voce deve converter TColor para String  e adicionar esse valor aos itens do Combobox.

4 - Se cada item do Combobox deve ter uma cor difrente, então voce terá que trabalhar com Array.  Crie uma variavel array que vai armazenar os valores de TColor para cada indice do Combobox

5 - O Combobox deve ficar no Style = csOwnerDrawFixed para que as cores apareçam

6 - Use o evento OnDrawItem  para exibir os items ( Cores ) que estão no Combobox .

Resultado:

ColorBox.JPG

OBS: Evento OnDrawItem ( Combobox  ) 

Descrição

Escreva um manipulador de eventos OnDrawItem para desenhar os itens na lista suspensa de uma caixa de combinação ( Combobox  )  Um manipulador de eventos OnDrawItem pode adicionar elementos gráficos aos itens da lista ou substituir o texto do item da lista por gráficos.

Desenhe os itens na tela usando as coordenadas fornecidas pelo parâmetro Rect.

OnDrawItem ocorre apenas se Style for definido como csOwnerDrawFixed ou csOwnerDrawVariable.

Se um manipulador de eventos OnDrawItem não for fornecido, a caixa de combinação preenche o parâmetro Rect com o pincel atual e grava o valor de texto do item especificado pelo parâmetro Index.

OBS: Se voce não conseguir fazer, eu passo um exemplo pronto para voce

abraço

 

Link para o comentário
Compartilhar em outros sites

  • 0

O combobox não pode ficar com o Style = csOwnerDrawFixed, porque o texto some, eu não quero colorir o combobox eu quero colorir a fonte, ou seja, os nicks que estiver neles. Para covnerter Tcolor em string ,teria que ser em rgb (#000000) porque vou estar fazendo um chat com base na html do site. Tem que refazer esse desafio.

Link para o comentário
Compartilhar em outros sites

  • 0

É um bom exemplo, mas para trabalhar com cores diferentes não é o meu caso, então podemos excluir a variável array. Na fonte abaixo temos essa variável mas se eu não quero trabalhar com cores distintas eu tenho que deletar algumas linhas, nesse caso eu tenho que mudar as linhas abaixo.

var
  Form1: TForm1;
const Colors: array[0..2] of TColor =
 (clGreen, clRed, clYellow) ;

 

Link para o comentário
Compartilhar em outros sites

  • 0

isso porque voce tem que mudar a cor da fonte do texto (  Itens do combobox )

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin

 with Control as TComboBox do
 begin
   Canvas.Font.Color := TColor(Colors1[Index]);
   Canvas.FillRect(Rect);
   Canvas.TextOut(Rect.Left,Rect.Top,ComboBox1.Items.Strings[index]);
 end;
end;

OBS: Colors1 é a variavel array que vai armazenar as cores que eu escolher
     no componente ColorDialog1 que vão aparecer no Combobox

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

mas as cores do dialog color não passa para o combobox,

OBS: Colors1 é a variavel array que vai armazenar as cores que eu escolher no componente ColorDialog1 que vão aparecer no Combobox

e não quero que fique esse azul quando escolhida a cor.

É só acrescentar uma linha de comando para conseguir isso

voce deve alterar a cor de fundo do combobox

ColorBox3.JPG

Link para o comentário
Compartilhar em outros sites

  • 0

amigo, sei que voce é iniciante ... já poderia ter-lhe dado a solução, mas voce mesmo disse:

( não sou como novatos que chega e pede os comandos prontos, se você sabe fazer, me passe o comando porque antes de abrir um post eu tento fazer de todas as formas. )

te passei a lógica e um exemplo, que bastaria voce mudar algumas linhas de comando para conseguir resolver a sua dúvida.

fiz assim, somente para voce ver que, sem lógica de programação e sem conhecimento dos comandos da linguagem, voce vai ficar patinando, sem sair do lugar.

por isso, nessa área é preciso muito estudo, muita pratica e muita paciência

para exemplificar o que te falei até agora, veja o código como deveria ficar, em relação ao código do exemplo que te passei.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    ColorDialog1: TColorDialog;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  cc : integer = -1;
  Colors1: array[0..19] of TColor; // atribuir 20 cores do ColorDialog1
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   if ColorDialog1.Execute then
      begin
         inc(cc); // contador (index) do combobox 
         Colors1[cc] := ColorDialog1.Color; // pegar a cor selecionada
         ComboBox1.Items.Append(Edit1.Text); // adicionar no Combobox o Edit1.Text
      end;
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
 with Control as TComboBox do
 begin
   Canvas.Font.Color := TColor(Colors1[Index]); // mudar cor da fonte do item
   Canvas.Brush.Color := clWhite; // mostrar fundo branco no combobox
   Canvas.FillRect(Rect);
   Canvas.TextOut(Rect.Left,Rect.Top,ComboBox1.Items.Strings[index]); // mostrar Nomes
 end;
end;

end.

Resultado:

ColorBox4.JPG

OBS: Apostila completa de delphi, ensina desde o básico até elementos avançados.

http://www.planetadelphi.com.br/download/3737/apostila/biblia-delphi

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

"amigo, sei que voce é iniciante ... já poderia ter-lhe dado a solução, mas voce mesmo disse:"

( não sou como novatos que chega e pede os comandos prontos, se você sabe fazer, me passe o comando porque antes de abrir um post eu tento fazer de todas as formas. )

Eu sou novato mas tento fazer buscando nos fóruns o que eu procuro e quando não encontro aí eu peço o código pronto, foi isso que eu queria explicar, não disse que tentaria fazer sozinho porque isso eu já tentei há semanas atrás, se eu estou abrindo um post é porque necessito do comando pronto.

"se você sabe fazer, me passe o comando"

Se você sabe fazer era só ter passado o comando.

 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...