Desmarcar Vários CheckBox dentro de GroupBox

Delphi

29/10/2013

Pessoal tenho uns 4 GroupBox e dentro de cada GroupBox tem uns 30 CheckBox, então queria que ao selecionar vários CheckBox de diferentes GroupBox. No Onclick do botão Limpar desmarcasse os ChexBox que estiverem selecionados. Sem ter que dar "CheckBox1.Checked := False;" para cada ChexBox.
Valeu abraço!
Jawa-informática

Jawa-informática

Curtidas 0

Respostas

Thiago Irrazabal

Thiago Irrazabal

29/10/2013

Boa tarde, eu faria com TCheckListaBox...

no evento OnClick de algum botão qualquer:

var
  I: Integer;
begin
  for I := 0 to CheckListBox.Items.Count - 1 do
    if CheckListBox.Checked then
      CheckListaBox.Checked[I] := not CheckListaBox.Checked[I];
end;




Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Thiago Irrazabal

Thiago Irrazabal

29/10/2013

Pessoal tenho uns 4 GroupBox e dentro de cada GroupBox tem uns 30 CheckBox, então queria que ao selecionar vários CheckBox de diferentes GroupBox. No Onclick do botão Limpar desmarcasse os ChexBox que estiverem selecionados. Sem ter que dar "CheckBox1.Checked := False;" para cada ChexBox.
Valeu abraço!


Se tu quiser com o GroupBox e os CheckBox... eu faria assim:

no evento OnClick de algum botão qualquer.
var
  I: Integer;
begin
  inherited;
  for I := 0 to ComponentCount - 1 do
    if (Components[I] is TCheckBox) and (Components[I].GetParentComponent.Name = 'GroupBox1') then
        TCheckBox(Components[I]).Checked := False;
end;


No caso só substituir o GroupBox1 pelo nome do teu GroupBox, para testar os outros GroupBox é só por elses para todos os teus GroupBox's.

Se por acaso tu quiser desmarcar todos checkbox do teu formulário sem testar os GroupBox é só tirar isso "and (Components[I].GetParentComponent.Name = 'GroupBox1')" do if.

espero ter ajudado abraço.



Att,
Thiago Irrazabal de Oliveira.
GOSTEI 0
Jawa-informática

Jawa-informática

29/10/2013

Opa, blz Thiago! Vou testar a função e ver se resolve meu problema e posto aqui valeu! Obrigado por responder o post.
GOSTEI 0
Jawa-informática

Jawa-informática

29/10/2013

Thiago funcionou para todos os ChekBox retirando o que você citou anteriormente.
Só que coloquei no OnClick de cada CheckBox para mudar a cor do fonte ao selecioná-lo.
TCheckBox(sender).Font.Color := clWindowText;
TCheckBox(sender).Font.Color := clRed;


inherited;   for I := 0 to ComponentCount - 1 do
    if (Components[I] is TCheckBox) then
    TCheckBox(Components[I]).Checked := False;
    TCheckBox(Components[I]).Font.Color := clWindowText;


Queria alem de limpar os ChekBox, alguns edits também e coloquei além do if:
TCheckBox(Components[I]).Font.Color := clWindowText;
Para voltar a cor normal do CheckBox e veja o que mostrou:
FOR-Loop variable 'i' may be undefined after loop


GOSTEI 0
Marcos Saffran

Marcos Saffran

29/10/2013

isso ocorreu pois o segundo comando do if acabou ficando fora do comando for, coloque o programa dessa forma:
var
  I: Integer;
begin
 inherited;
   for I := 0 to ComponentCount - 1 do
   begin
    if (Components[I] is TCheckBox) then
    begin
     TCheckBox(Components[I]).Checked := False;
     TCheckBox(Components[I]).Font.Color := clWindowText;
    end;
   end;
end;
GOSTEI 0
Jawa-informática

Jawa-informática

29/10/2013

Marcos Alfredo valeu meu irmão pela dica! Funcionou. Tava fora do Loop mesmo rsrs é que sou iniciante mas estou estudando Lógica de programação e queria agradecer pela ajuda sua e de Thiago. Esse projeto é um sisteminha que estou desenvolvendo para meu TCC. Abração e obrigado a vocês pela ajuda!
Apropósito como colocar "RESOLVIDO" no post?
GOSTEI 0
POSTAR