Checklistbox item selecionado

21/01/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:
[color=red:929c399f43]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; [/color:929c399f43]

Mas ele so retornar o primeiro salario.
Alguem pode ajudar


Dpinho

Respostas

22/01/2006

Edilcimar

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


Responder Citar

22/01/2006

Aasn

Olá DPinho,

a rotina ficaria 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&93; then
        begin
        texto := CheckListBox1.Items&91;i&93; + ´ ´;
        table1.Locate(´Lastname´, texto, &91;loPartialKey, loCaseInsensitive&93;);
        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


Responder Citar

22/01/2006

Dpinho

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:

[color=red:a6d8ba04d4]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;[/color:a6d8ba04d4]

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


Responder Citar

22/01/2006

Edilcimar

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


Responder Citar

22/01/2006

Dpinho

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


Responder Citar