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
