Olá pessoal, vamos a mais um artigo com o objetivo de mostrar a seleção do componente checkbox no Delphi.

Vamos iniciar abrindo o Delphi e criando uma nova aplicação, adicione no Form cinco Checkbox e três Buttons. (OBS: Fique a Vontade para por quantos Checkbox quiser é só um exemplo). A imagem abaixo mostra uma sugestão de tela:



Feito isto prosseguiremos indo à unit do Formulário e criando dentro do Type um TTipo permissão igual a (Chek, Unchek e Invert), com isso vamos fazer as verificações das seleções e em seguida vamos criar uma procedure dentro do private chamada Change Permissão do tipo permissão não se esqueça de implementar CTRL+SHIFT+C. Como segue no código abaixo:


type
  TTipoPermissao = (TpChek, TpUnchek, TpInvert);
  TForm1 = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    Panel2: TPanel;
    BtnTodos: TButton;
    BtnNenhum: TButton;
    BtnInverter: TButton;
    procedure BtnTodosClick(Sender: TObject);
    procedure BtnNenhumClick(Sender: TObject);
    procedure BtnInverterClick(Sender: TObject);
  private
  procedure ChangePermissao (TipoPermissao : TTipoPermissao);
    { Private declarations }
  public
    { Public declarations }
  end;
Depois de Implementado, vamos fazer uma contagem dos componentes checkbox do formulário e montar uma estrutura case para verificar  qual vai ser o status da marcação . Como segue no código abaixo:


procedure TForm1.ChangePermissao(TipoPermissao: TTipoPermissao);
var
 I : Integer;
begin
  for I := 0 to ComponentCount - 1 do
  begin
   if Components[I] is TCheckBox then
    begin
     case TipoPermissao of
      TpChek   :(Components[I] as TCheckBox).State := cbChecked;
      TpUnchek :(Components[I] as TCheckBox).State := cbUnchecked;
      TpInvert :if (Components[I] as TCheckBox).State = cbChecked then
                   (Components[I] as TCheckBox).State:= cbGrayed;
     end;

    end;

  end;
end;
end.
Feito isto, vamos dentro de cada botão posto no formulário invocando a procedure changepermissao e passando o seu valor para as suas respectivas ordens. Como segue no código abaixo:


procedure TForm1.BtnInverterClick(Sender: TObject);
begin
  ChangePermissao(TpInvert);
end;

procedure TForm1.BtnNenhumClick(Sender: TObject);
begin
  ChangePermissao(TpUnchek);
end;

procedure TForm1.BtnTodosClick(Sender: TObject);
begin
  ChangePermissao(TpChek);
end;
Agora teste sua aplicação, vou ficando por aqui pessoal até a próxima.

Douglas Claudio

E-mail: douglas_claudio@hotmail.com