Fórum Desmarcar Vários CheckBox dentro de GroupBox #459775

29/10/2013

0

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

Responder

Posts

29/10/2013

Thiago Irrazabal

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.
Responder

Gostei + 0

29/10/2013

Thiago Irrazabal

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.
Responder

Gostei + 0

29/10/2013

Jawa-informática

Opa, blz Thiago! Vou testar a função e ver se resolve meu problema e posto aqui valeu! Obrigado por responder o post.
Responder

Gostei + 0

29/10/2013

Jawa-informática

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


Responder

Gostei + 0

29/10/2013

Marcos Saffran

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;
Responder

Gostei + 0

29/10/2013

Jawa-informática

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?
Responder

Gostei + 0

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

Aceitar