Um comando para vários DBEdit
Gostaria de colocar aqui uma dúvida pois ja tenho tentado muitas veses fazer isso, mas nao tive sucesso. Tenho um formulário com 12 DBEdit, estes são responsaveis por apresentar os valores de parcelas, se nao tem valor ele mostra como seu texto o seguinte conteúdo "......................", senão ele apresenta o valor cadastrado, para a parcela, até ai tudo funcionando, mas quando parte para a soma te todos eles vem o problema, queria uma fórmula mais facil para soma-los do que StrToint(DBEdit1)+Strtoint(DBEdit2.text)+strto...... até o DBEdit final, gostaria de algo que funcionasse como um for, como no pascal, colocamos vários valores nas variáveis e ai somente somamos seus valores.
Se alguem souber como eu posso resolver isso fico grato.
//código atual var total,x:integer; begin total:=0; total:=strtoint(DBEdit10.text)+strtoint(DBEdit11.text)+strtoint(DBEdit12.text)+ +strtoint(DBEdit13.text)+strtoint(DBEdit14.text)+strtoint(DBEdit15.text)+ +strtoint(DBEdit16.text)+strtoint(DBEdit17.text)+strtoint(DBEdit18.text)+ +strtoint(DBEdit19.text)+strtoint(DBEdit20.text)+strtoint(DBEdit21.text); label19.caption:=IntToStr(total); end; //gostariade algo assim for x:=0 to 11 do begin total:=total+strtoint(DBEdit[x].text); end; showmessage(inttostr(Total));
Se alguem souber como eu posso resolver isso fico grato.
Leonardo Xavier
Curtidas 0
Respostas
Eduardo Marcolongo
09/09/2010
Se vc tiver somente estes dbedit no formulario vc pode fazer assim:
var
total, i : integer
begin
for i := 0 to (componentcount-1) do
if ((components[i] is tdbedit) and (tdbedit(components[i]).text '.........')) then
total := strtoint(tdbedit(components[i]).text)+total;
ou se vc preferir pode fazer pelo campo:
for i := nr_campo_inicial to nr_campo_final do
total := datasource1.dataset.fields.fieldbynumber[i].value+total;
Espero ter ajudado.
var
total, i : integer
begin
for i := 0 to (componentcount-1) do
if ((components[i] is tdbedit) and (tdbedit(components[i]).text '.........')) then
total := strtoint(tdbedit(components[i]).text)+total;
ou se vc preferir pode fazer pelo campo:
for i := nr_campo_inicial to nr_campo_final do
total := datasource1.dataset.fields.fieldbynumber[i].value+total;
Espero ter ajudado.
GOSTEI 0
Leonardo Xavier
09/09/2010
Se vc tiver somente estes dbedit no formulario vc pode fazer assim:
var
total, i : integer
begin
for i := 0 to (componentcount-1) do
if ((components[i] is tdbedit) and (tdbedit(components[i]).text <> '.........')) then
total := strtoint(tdbedit(components[i]).text)+total;
ou se vc preferir pode fazer pelo campo:
for i := nr_campo_inicial to nr_campo_final do
total := datasource1.dataset.fields.fieldbynumber[i].value+total;
Espero ter ajudado.
var
total, i : integer
begin
for i := 0 to (componentcount-1) do
if ((components[i] is tdbedit) and (tdbedit(components[i]).text <> '.........')) then
total := strtoint(tdbedit(components[i]).text)+total;
ou se vc preferir pode fazer pelo campo:
for i := nr_campo_inicial to nr_campo_final do
total := datasource1.dataset.fields.fieldbynumber[i].value+total;
Espero ter ajudado.
Obrigado mas ababei de resolver isso da seguinte maneira:
var total,x:integer; begin total:=0; for x:=27 to 38 do begin if (DataSource1.DataSet.Fields[x].Text='......................') or (DataSource1.DataSet.Fields[x].Text='.....................') then begin end else begin total:=total+strtoint(DataSource1.DataSet.Fields[x].Text); Label19.caption:=IntToStr(total); end; end;
Grato pela sua dica.
GOSTEI 0