Array
(
)

Checklistbox item selecionado

Dpinho
   - 21 jan 2006

preciso do seguinte:
a medida que o usuario for clicando nos items do checklistbox ele va procurando na tabela e adiconando o valor em um Edit.
fiz assim:
procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var
i:integer;
valor: Currency;
texto: string;
begin
for i := 0 to CheckListBox1.Count-1 do
if CheckListBox1.Checked[i] then
texto := CheckListBox1.Items[i] + ´ ´;
table1.Locate(´Lastname´, texto,[]);
valor := Valor + Table1.FieldByName(´Salary´).AsCurrency;
Label1.Caption := texto + currtostr(valor);
end;

Mas ele so retornar o primeiro salario.
Alguem pode ajudar


Edilcimar
   - 22 jan 2006

o erro está no begin, ele deve ficar depois do for e não antes


Aasn
   - 22 jan 2006

Olá DPinho,

a rotina ficaria assim:

#Código

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
var i : integer;
valor : Currency;
texto : string;
begin
for i := 0 to CheckListBox1.Count-1 do
if CheckListBox1.Checked[i] then
begin
texto := CheckListBox1.Items[i] + ´ ´;
table1.Locate(´Lastname´, texto, [loPartialKey, loCaseInsensitive]);
valor := Valor + Table1.FieldByName(´Salary´).AsCurrency;
Label1.Caption := texto + currtostr(valor);
end;
Application.ProcessMessages;
end;


nota: o CheckListBox em questão deve conter exatamente o texto que se deseja localizar na tabela, ou seja, se vc está pesquisando o campo ´Lastname´, este deve ser o conteúdo do list, ou será necessário um tratamente na variável ´texto´ para que se possa fazer a pesquisa.

[]´s
AASN


Dpinho
   - 22 jan 2006

Valeu amigo, era justamente isto que precisava. Ficou otimo.
Agora preciso o seguinte:
Estou incializando os valores da tabela com o campo Lastname, mas preciso colocar mais tres colunas no checklistbox ficaria assim

Nome Sobrenome Salario.

Utilizo a seguinte rotina para preencher o checklistbox:

procedure TForm1.FormCreate(Sender: TObject);
begin
Table1.Open;
while not Table1.Eof do
begin
CheckListBox1.Items.Add(Table1.FieldByName(´LastName´).AsString + ´ ´ +Table1.FieldByName(´FirstName´).AsString+ ´ ´Table1.FieldByName(´Salary´).AsString );
Table1.next;
end;

Mas dependendo do tamanho do nome fica sem formatação, tentei definir o numero de colunas, mas acontece sai a lista dos nomes tirando a barra de rolagem e gostaria que cada campo ficasse em uma coluna.
Obrigado a qualquer ajuda


Edilcimar
   - 22 jan 2006

troque para
CheckListBox1.Items.Add(Copy(Table1.FieldByName(´LastName´).AsString + ´ ´ +Table1.FieldByName(´FirstName´).AsString+ ´ ´Table1.FieldByName(´Salary´).AsString ),1,50);
eu escolhi 50 caracteres, vc escolhe quantos quiser


Dpinho
   - 22 jan 2006


Citação:
troque para
CheckListBox1.Items.Add(Copy(Table1.FieldByName(´LastName´).AsString + ´ ´ +Table1.FieldByName(´FirstName´).AsString+ ´ ´Table1.FieldByName(´Salary´).AsString ),1,50);
eu escolhi 50 caracteres, vc escolhe quantos quiser


Deu na mesma forma, gostaria se possivel de separar por colunas e se pudesse nomear as colunas seria ainda melhor
Obrigado