Fórum Somar em uma listbox e exibir em um campo edit #340948
25/04/2007
0
Ao criar uma nova linha, o campo edit precisa somar o conteúdo da coluna 5, ou seja, a coluna 5 vai ter números em todas as linhas e esta soma deve ser exibida no campo edit.
Alguém sabe como somar o conteúdo desta coluna e exibir em um campo edit?
Mcsmarmcs
Curtir tópico
+ 0Posts
26/04/2007
Adriano Santos
Como você está fazendo pra montar as colunas no listbox? São colunas mesmo? Tabulação?
Talvez seja mais prático usar um TListView, mais fácil. Olha um exemplo:
[list:77d0c65111]
[*:77d0c65111] Poe na tela 3 Edits (edtDescricao, edtValor, edtSoma), 1 Button e 1 ListView (lstValores).
[*:77d0c65111] Clica duas vezes no ListView e adiciona 2 colunas. Uma descrição e a outra Valor. A primeira com 190 de Width e a segunda com 90. Configura a segunda pra Aliment = taRightJustify.
[*:77d0c65111] No codigo do botão coloque:
procedure TForm1.Button1Click(Sender: TObject); procedure AdicionarValor(ADesc, AValor: string); var Item : TListItem; begin with lstValores do begin Item := Items.Add; Item.Caption := ADesc; Item.SubItems.Add(AValor); end; end; function Somar: Double; var I : integer; Vlr : Double; begin Vlr := 0; for I := 0 to lstValores.Items.Count - 1 do Vlr := Vlr + StrToFloat(lstValores.Items[I].SubItems[0]); Result := Vlr; end; begin AdicionarValor(edtDescricao.Text, edtValor.Text); edtSoma.Text := FormatFloat(´,.´, Somar); end;
[/list:u:77d0c65111]
Você vai ter algo como isso aqui:
[URL=http://img339.imageshack.us/my.php?image=listviewnz9.jpg][img:77d0c65111]http://img339.imageshack.us/img339/1373/listviewnz9.th.jpg[/img:77d0c65111][/URL]
Gostei + 0
26/04/2007
Mcsmarmcs
Gostei + 0
26/04/2007
Rogick
Mas eu acho melhor vc criar uma classe do tipo TObject e uma lista(TList ou TStringList p/ manipular estas informações, a ListBox só irá exibir o conteúdo desta lista e vc terá um poder de manipulação maior sobre as informações
Mas posta o q vc tá fazendo p/ eu ter uma idéia de como t ajudar melhor
Gostei + 0
26/04/2007
Mcsmarmcs
procedure Tfrmvenda.btnexecutarClick(Sender: TObject);
const
// Numero maximo de TABs
MAX_TABS = 4;
Tab = #9;
var
Tabulators: array[0..MAX_TABS] of Integer;
begin
if DBLookupComboBox1.Text=´´ then
begin
DBLookupComboBox1.SetFocus;
MessageDlg(´Todos os campos marcados com ´*´ devem ser preenchidos!´, mtInformation,[mbOk], 0);
end
else
begin
Panel2.Enabled:=true;
Panel10.Enabled:=false;
btnexecutar.Enabled:=false;
Tabulators[0] := 50;
Tabulators[1] := 50;
Tabulators[2] := 50;
Tabulators[3] := 50;
Tabulators[4] := 50;
Listbox1.TabWidth := 1;
// Seta TABs no TListbox
SendMessage(ListBox1.Handle, LB_SETTABSTOPS, MAX_TABS, Longint(@Tabulators));
with dm.qryteste do
begin
Active:=false;
SQL.Clear;
SQL.Add(´SELECT COUNT(*) FROM vendas;´);
Active:=true;
end;
dbedit9.text:= floattostr(strtofloat(DBEdit11.text)+1);
DBEdit5.text:=´0´;//somente para calcular o acumulador
Listbox1.Items.Add(´Data: ´+(dbedit6.text)+tab+´Hora: ´+(dbedit7.text)+tab+´Nota Fiscal: ´+(dbedit9.text)+tab+´´+tab+´´);
Listbox1.Items.Add(´Código´+tab+´Descrição´+tab+´Valor Unit.´+tab+´Quantidade´+tab+´Valor Total´ );
dbedit10.Text:=dm.qryloginnome.Value;
dbedit1.DataField:=´´;
dbedit4.DataField:=´´;
dbedit2.SetFocus;
end;
end;
Gostei + 0
27/04/2007
Rogick
Eu não entendi direito, esses DBEdits estão vinculados a q DataSet? É ao [b:cc3239dcd9]dm.qryteste[/b:cc3239dcd9]? E aonde exatamente vc joga os valores p/ a listBox? Pelo o q vi, vc tá só montando o cabeçalho. Pode mostrar aqui uma lista preenchida? É só criar um botão e colocar este código nele
... ListBox1.SaveToFile(´c:\lista.txt´); ...
Ai abrir o arquivo gerado e copiar o conteúdo p/ cá p/ q eu possa ter uma idéia melhor do q vc tá fazendo
Abraços, Rogick
Gostei + 0
27/04/2007
Rogick
Eu não entendi direito, esses DBEdits estão vinculados a q DataSet? É ao [b:518ea0d96b]dm.qryteste[/b:518ea0d96b]? E aonde exatamente vc joga os valores p/ a listBox? Pelo o q vi, vc tá só montando o cabeçalho. Pode mostrar aqui uma lista preenchida? É só criar um botão e colocar este código nele
... ListBox1.SaveToFile(´c:\lista.txt´); ...
Ai abrir o arquivo gerado e copiar o conteúdo p/ cá p/ q eu possa ter uma idéia melhor do q vc tá fazendo
Abraços, Rogick
Gostei + 0
27/04/2007
Mcsmarmcs
Obrigado pela paciência.
Gostei + 0
27/04/2007
Rogick
goFiexdVertLine = False
goFiexdHorzLine = False
goRowSelect = True
goRangeSelect = False
Assim vc poderá manipular célula por célula da StringGrid por meio da prop [b:1976137dbd]Cells[/b:1976137dbd] e ter um visual d ListBox, se vc fizer uma arrumação direita o resultado será mto bom 8)
Boa programação p/ vc :wink:
Gostei + 0
27/04/2007
Rogick
goFiexedVertLine = False
goFiexedHorzLine = True
goVertLine = False
goHorzLine = False
goRowSelect = True
goRangeSelect = False
goEdit = False
Agora sim vai ficar um negócio direito.
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)