Nesse artigo veremos como usar o componente CheckListBox para manipular dois valores, um valor para o usuário e outro para ser usado na aplicação.

Usaremos nesse exemplo uma tabela no Firebird com Script abaixo:

 

CREATE TABLE "TB_Login"

(

  "PK_Login"    INTEGER NOT NULL,

  "Nome"         VARCHAR(15) CHARACTER SET WIN1252 NOT NULL,

 UNIQUE ("Nome"),

CONSTRAINT "PK_Login" PRIMARY KEY ("PK_Login")

);

            Usei  esta tabela mas poderia ser qualquer outra tabela, adicione alguns registros nessa tabela.

Abra o Delphi e crie uma nova aplicação. Coloque as seguintes configurações:

 Name do form : FrmCheckListBox

Caption : Exemplo CheckListBox

            Salve o formulário como uFrmCheckListBox  e  o projeto como ProjCheckListBox, Crie uma Unit (File/New/Unit-Delphi) salve como uCheckListBox.

Sua Unit deve ficar como exemplo abaixo.

 

unit uCheckListBox;

interface

    type

    TAuxiliar = class

    private

        vValor : String;

    public

        constructor Create(const pValor : String); // dê um Ctrl+shift+c nessa posição

        property Valor : String read vValor write vValor;

    end;

 

implementation

 

{ TAuxiliar }

 

constructor TAuxiliar.Create(const pValor: String);

begin

   inherited Create;

   vValor := pValor;

end;

 

end.

 

Após implementar a Unit de uses dela no  UfrmCheckListBox (Alt + f11).

Adicione ao form os seguintes objetos:

TSQLConnection , TSQLDataSet, TDataSetProvider, TClientDataSet.

Seu form deve ficar momo abaixo:


Ligue o ConnExemplo ao banco, o SQLExemplo a propriedade SQLConnection ao ConnExemplo, o DSPExemplo a propriedade DataSet ao SQLExemplo e o CDSExemplo propriedade ProviderName ao DSPExemplo.

 

            Marque o SQLExemplo e vá até a propriedade CommandText e coloque a seguinte instrução:

select "Nome", "PK_Login" from "TB_Login"

Coloque a propriedade Active para True, veja se a instrução SQL passou.

Adicione um componente TCheckListBox (Paleta Additional), e um TButton , Mude o Caption dele para Ler DataSet e implemente o seguinte código no botão:

 

procedure TFrmCheckListBox.Button1Click(Sender: TObject);

Var

    VAuxiliar: TArmazena;

    // Variavel do tipo que criamos na Unit.

begin

    CDSExemplo.Active := True;

    CheckListBox1.Clear;

    with CDSExemplo do

    begin

        Open;

        First;

        while not eof do

        begin

            VAuxiliar := TArmazena.Create(FieldByName('PK_Login').AsString);

            CheckListBox1.Items.AddObject(FieldByName('Nome').AsString, VAuxiliar);

            Next;

        end;

        Close

    end;

end;

 

            Compile o programa e o resultado deve ser esse:


Nesse momento já podemos pegar a chave primária, para isso vamos usar para demonstrar  estes valores adicione um TListBox (Paleta Additional)  e um TButton.

 

            Implemente o seguinte código no botão:

 

procedure TFrmCheckListBox.Button2Click(Sender: TObject);

Var

    I: Integer;

begin

    ListBox1.Clear;

    for I := 0 to CheckListBox1.Items.Count - 1 do

        if CheckListBox1.Checked[I] then

            ListBox1.Items.Add(TArmazena(CheckListBox1.Items.Objects[I]).Valor);

end;

 

Execute o Programa e veja os resultados. Deve ficar como imagem abaixo:



Abraço.

Marco A. S. Carvalho

marco@cestecnologia.com.br