GARANTIR DESCONTO

Fórum Mudar a cor da font do CheckBox qdo Clicado #377660

15/05/2010

0

Alguem sabe como mudar a cor da fonte do CheckBox quando Clicadojá crie uma procedure assim:
procedure TFrmPadrao.CheckBoxClicado;Var  x: Integer;begin  // Configura o componente CheckBox  for x := 0 to ComponentCount - 1 do  if (Components[x] is TCheckBox) then  begin    case (Components[x] as TCheckBox).State of     cbUnchecked: TColorControl(Components[x] as TCheckBox).Font.Color := clWindowText;     cbChecked  : TColorControl(Components[x] as TCheckBox).Font.Color := clRed;    end;  end;end;
tentei chamar assim
procedure TFrmPadrao.CheckBox1Click(Sender: TObject);begin  CheckBoxClicado;//  CheckBox1.Font.Color := clRed;end;
e não consegui, alguem já conseguir fazer isto??
José Silva.

José Silva.

Responder

Posts

16/05/2010

Marco Salles

O  checkbox é um controle padrão do Windows, o que significa que todo o desenho do controle é feito pelo Windows   Para poder fazer isso, você teria que implementar seu próprio checkbox com uma rotina de desenho modificada.
Responder

Gostei + 0

17/05/2010

José Silva.

MARCO ANTONIO SALLES, obrigado pela sua atenção e sua resposta, mas sou principiante, e como todo principiante gosta de embelezar as sua primeiras aplicações e vi que o checkbox é um componente diferenciado, como você mesmo disse "você teria que implementar seu próprio checkbox com uma rotina de desenho modificada", por um acaso você tem um exemplo de como fazer isso??Grato, fico no aguardo
Responder

Gostei + 0

17/05/2010

Marco Salles

MARCO ANTONIO SALLES, obrigado pela sua atenção e sua resposta, mas sou principiante, e como todo principiante gosta de embelezar as sua primeiras aplicações e vi que o checkbox é um componente diferenciado, como você mesmo disse "você teria que implementar seu próprio checkbox com uma rotina de desenho modificada", por um acaso você tem um exemplo de como fazer isso?? Grato, fico no aguardo
    Entendo.. Pois bem eu poderia ate criar aqui mesmo , devargarzinho.... um tutorial , para implementar esta funcionalidade.   Vc sabe criar um pacote dpk ????
Responder

Gostei + 0

17/05/2010

José Silva.

Entendo.. Pois bem eu poderia ate criar aqui mesmo , devargarzinho.... um tutorial , para implementar estafuncionalidade. Vc sabe criar um pacote dpk ????
MARCO ANTONIO SALLES, isso eu já sei!!!Se você disponibilizar esse tutorial, ira ajudar não só a mim como também todos(iniciantes é claro) que procuram por essa solução.Desde já agradeço
 
Responder

Gostei + 0

17/05/2010

Marco Salles

Beleza , mas este Tutorial eu não tenho. Teria que fazer devargar ... um pouquinho por dia Sabe como é .. Tempo né   Sairemos do Chão , ate chegar no componente em questão   Ok ???
Responder

Gostei + 0

18/05/2010

Lartedesign

Ola José Francisco

Minha dica é nao complique uma coisa tão simples. Sua solução está aqui

No evento onclick do CheckBox  coloque da seguinte forma

procedure TFrmPadrao.CheckBox1Click(Sender: TObject);
    begin
     if CheckBox1.Checked = True then  //se estiver selecionado a cor do texto será vermelho
      begin
       CheckBox1.Font.Color := clRed;
         end else   // se nao estiver
 selecionado a cor do texto será Preto
      begin
     CheckBox1.Font.Color := clWindowText;
  end;
end;


Apenas isso .

Espero ter ajudado

lartedesign.
www.lartedesign.com.br
Leandro
Responder

Gostei + 0

18/05/2010

Lartedesign

Ola José Francisco

Minha dica é nao complique uma coisa tão simples. Sua solução está aqui

No evento onclick do CheckBox  coloque da seguinte forma

procedure TFrmPadrao.CheckBox1Click(Sender: TObject);
    begin
     if CheckBox1.Checked = True then  //se estiver selecionado a cor do texto será vermelho
      begin
       CheckBox1.Font.Color := clRed;
         end else   // se nao estiver
 selecionado a cor do texto será Preto
      begin
     CheckBox1.Font.Color := clWindowText;
  end;
end;


Apenas isso .

Espero ter ajudado

lartedesign.
www.lartedesign.com.br
Leandro
Responder

Gostei + 0

18/05/2010

Marco Salles

ola seu lartedesign tudo bem   qual o delphi vc usa e qual o sistema operacional ????    
Responder

Gostei + 0

18/05/2010

José Silva.

lartedesign, infelizmente não deu certo, esse componente e diferenciado, teste ai e você verá que não funciona.Continuo no aguardo
Responder

Gostei + 0

18/05/2010

Lartedesign

respondendo a primeira pergunta

WINXP  .  DELPHI 7




SEGUNDA DO   JOSÉ FRANCISCO DA SILVA.

se vc usa um checkbox uq pode ser diferente no componente ?

uq esta acontecendo quando vce testa a aplicação  ???   qual delphi vc utiliza ???
Responder

Gostei + 0

18/05/2010

Emerson Nascimento

olha, deveria ser bem simples mesmo.

tente assim:

procedure TFormPadrao.CheckBox1Click(Sender: TObject);
begin
  CheckBoxClicado(TCheckBox(Sender));
end;

procedure TFormPadrao.CheckBoxClicado(chkBox: TCheckBox);
begin
   if chkBox.Checked then
      chkBox.Font.Color := clGreen
   else
      chkBox.Font.Color := clWindowText;
end;


Responder

Gostei + 0

18/05/2010

José Silva.

lartedesign, respondendo 
se vc usa um checkbox uq pode ser diferente no componente ? 
Não é que é um componente diferente, mas sim diferenciado no que diz respeito a alteração da font 

uq esta acontecendo quando vce testa a aplicação  ???  qual delphi vc utiliza ??? 
Simplesmente não muda a cor da font Delphi 2010  Desde já agradeço sua resposta

 
Responder

Gostei + 0

18/05/2010

José Silva.

Emerson, vou testar e depois respondo, pois no momento estou sem DelphiObrigado
Responder

Gostei + 0

19/05/2010

José Silva.

Emerson, deveria ser bem simples mesmo.
tentei assim:



procedure TFormPadrao.CheckBox1Click(Sender:
TObject);begin  CheckBoxClicado(TCheckBox(Sender));end;

procedure TFormPadrao.CheckBoxClicado(chkBox: TCheckBox);begin   if chkBox.Checked then      chkBox.Font.Color := clGreen   else      chkBox.Font.Color := clWindowText;end;



E não surtiu o efeito esperado, ou seja, não mudou a cor da
font, mas engraçado que usando assim:

procedure
TFormPadrao.CheckBoxClicado(chkBox: TCheckBox);begin   if chkBox.Checked then      chkBox.Font .Style := [fsBold]   else      chkBox.Font .Style := [];end;

consegui que o estilo ficasse em NEGRITO.

Estou cada vez mais convencido que esse componente NÃO ACEITA MUDAR A
COR DA FONT, Nem os mais experientes desta comunidade conseguiram este feito.

Fico no aguardo

Mais uma vez obrigado
Emerson
Responder

Gostei + 0

19/05/2010

Marco Salles

é simples , fiquei livre do tutorial . por sorte   confesso que fiquei surpreso qnd o ChekBox permite alteração no Delphi 7 e a partir do Delphi 2007 não   vasculei um pouco da Vcl e cheguei na classe TButtonControl que seria a classe desprezada no caso da escolha de um novo checkBox   Fui na procedure procedure CNCtlColorStatic(var Message: TWMCtlColorStatic);
procedure TButtonControl.CNCtlColorStatic(var Message: TWMCtlColorStatic);
begin
  with ThemeServices do
    if ThemeControl(Self) then
    begin
      if (Parent <> nil) and Parent.DoubleBuffered then
        PerformEraseBackground(Self, Message.ChildDC)
      else
        DrawParentBackground(Handle, Message.ChildDC, nil, False);
      { Return an empty brush to prevent Windows from overpainting we just have created. }
      Message.Result := GetStockObject(NULL_BRUSH);
    end
    else
      inherited;
end;
  e debugando veriquei que ThemeControl(Self) para o Delphi2007 e Delphi2010 retornava sempre True. Tinha que cair no   inherited; para manter a cor e a font definida ate mesmo em DesignedTime   então o proximo passo foi desabiltar os Temas que vc faz em   caixa de diálogo Project Options -> página de aplicativos -> temas runtime Enable  .. desabilite   Fiz ums teste aqui e parece que agorar vai ( ...)  
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar