Armazenando Objetos: CheckListBox

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

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

Artigos relacionados