problemas com laço (For)
caros colegas, em um formulario tenho varios edits como abaixo:
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:
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!
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
Curtidas 0
Respostas
Dbergkamps10
15/09/2007
ola,
tente assim:
espero ter ajudado....
Att
Dalton
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
Raserafim
15/09/2007
com este código você pode ter quantos Edit´s quiser e ainda acrescentar mais sem precisar alterar o código.
este código irá eiir o tonteúdo de todos os edits que estão no form:
este código irá exibir apenas os edits cujo nome comece com Edit :
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
Mahdak
15/09/2007
[b:784f9f1cb1]Dalton[/b:784f9f1cb1]
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!
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
Dbergkamps10
15/09/2007
ola,
nesse caso, vc pode guardar o valor EditA no tag dos Edits e pegar so texts dele, assim:
espero ter ajudado
Att
Dalton
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
Raserafim
15/09/2007
mahdak,
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
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
Mahdak
15/09/2007
mahdak,insisto, acho que o código é o segundo que postei
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
Raserafim
15/09/2007
reescrevi o código.
vê se é isso que vc quer:
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
Mahdak
15/09/2007
bah brother, valeu, era justamente ai que eu queria chegar
um forte abraço!
um forte abraço!
GOSTEI 0