Um comando para vários DBEdit

Delphi

09/09/2010

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.


//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

Leonardo Xavier

Curtidas 0

Respostas

Eduardo Marcolongo

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.
GOSTEI 0
Leonardo Xavier

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.


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
POSTAR