Fórum problemas com laço (For) #346098
15/09/2007
0
editA1, editA2, editA3....
editB1, editB2, editB3....
editC1, editC2, editC3....
gostaria de fazer um laço para pegar o valor informado pelo usuario em todos os editA
seria algo do tipo:
//vamos supor que tenho 10 edits for I := 1 to 10 do begin if editA[I].Text <> ´´ then begin Showmessage(editA[I].Text); end; end;
porém o código acima nao funciona sob o seguinte erro:
[Pascal Error] uClass3Res.pas(1202): E2003 Undeclared identifier: ´editA´
alguem se habilita a me dar uma mão?
abraços a todos!
Mahdak
Curtir tópico
+ 0Posts
15/09/2007
Dbergkamps10
tente assim:
var i: integer; begin for i:=0 to ComponentCount-1 do if Components[i] is TEdit then Showmessage(TEdit[I].Text); end;
espero ter ajudado....
Att
Dalton
Gostei + 0
15/09/2007
Raserafim
este código irá eiir o tonteúdo de todos os edits que estão no form:
var I: Integer; begin for I := 0 to Self.ControlCount - 1 do if (Self.Controls[I] is TEdit) then ShowMessage(TEdit(Self.Controls[I]).Text);
este código irá exibir apenas os edits cujo nome comece com Edit :
var I: Integer; begin for I := 0 to Self.ControlCount - 1 do if (Self.Controls[I] is TEdit) and (pos(´Edit´, Self.Controls[I].Name) > 0)then ShowMessage(TEdit(Self.Controls[I]).Text);
Gostei + 0
15/09/2007
Mahdak
isso nao se aplica ao meu caso, pois essa rotina pega todos os Edit´s do formulário, e eu quero pegar apenas os EditA, como na ideia acima que postei
[b:784f9f1cb1]raserafim[/b:784f9f1cb1]
nao consegui aplicar isso dentro da linha de raciocinio que coloquei no inicio do tópico
desde ja obrigado a todos pela atenção e fico no aguardo...
um abraço!
Gostei + 0
15/09/2007
Dbergkamps10
nesse caso, vc pode guardar o valor EditA no tag dos Edits e pegar so texts dele, assim:
var i: integer; begin for i:=0 to ComponentCount-1 do if Components[i] is TEdit then if Components[i].Tag = ´EditA´ then Showmessage(TEdit[I].Text); end;
espero ter ajudado
Att
Dalton
Gostei + 0
15/09/2007
Raserafim
insisto, acho que o código é o segundo que postei
já que vc quer apenas os EditA, basta acrescentar uma letra A ao código.
aí está o código pronto. é só testar
var I: Integer; begin for I := 0 to Self.ControlCount - 1 do if (Self.Controls[I] is TEdit) and (pos(´EditA´, Self.Controls[I].Name) > 0)then ShowMessage(TEdit(Self.Controls[I]).Text);
Gostei + 0
16/09/2007
Mahdak
raserafim, consegui adaptar para verificar o que havia no editA , mas agora extendendo ao total da minha necessidade pintou um ultimo problema.
preciso tambem nesse mesmo ´for´ verificar o conteudo do editB, editC e editD. assim em um só ´for´ eu verificaria o conteudo dos edits como por exemplo:
for i:=0 to ComponentCount-1 do
editA[i], editB[i], editC[i], editD[i]
no código abaixo eu tento me expressar melhor:
var i : integer; begin cdsSol.Open; for i:=0 to ComponentCount-1 do if (Components[i] is TEdit) and (pos(´edtA´, Components[I].Name) > 0) then if TEdit(Components[I]).Text <> ´´ then begin cdsSol.Insert; cdsSolParametro.AsString := edtB[i].Text; // problema aqui cdsSolLimite.AsString := edtC[i].Text; // problema aqui cdsSolResultado.AsString := TEdit(Components[I]).Text; cdsSolLQ.AsString := edtD[i].Text; // problema aqui cdsSol.Post; Solubilizado := true; end;
fico no aguardo
abração e obrigado pela atenção!!!
Gostei + 0
16/09/2007
Raserafim
vê se é isso que vc quer:
var i : integer; begin cdsSol.Open; for i := 1 to 10 do begin cdsSol.Insert; cdsSolParametro.AsString := TEdit(FindComponent(´EditB´ + inttostr(i))).Text; cdsSolLimite.AsString := TEdit(FindComponent(´EditC´ + inttostr(i))).Text; cdsSolResultado.AsString := TEdit(FindComponent(´EditA´ + inttostr(i))).Text; cdsSolLQ.AsString := TEdit(FindComponent(´EditD´ + inttostr(i))).Text; cdsSol.Post; Solubilizado := true; end;
Gostei + 0
16/09/2007
Mahdak
um forte abraço!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)