Como mudar o conteúdo das labels em um laço for?
10/08/2008
0
:?: Estou com a seguinte dúvida, estou precisando que as captions (que são Label1 até Label5) recebam valores através de um laço for como no exemplo abaixo:
Var Conta :Integer;
Tipo :String;
begin
For Conta := 1 to 5 do
begin
Tipo := ´Valor´ + IntToStr(Conta);
Labelx.caption := dm1.Vendas.Fieldvalues[Tipo];
end;
end
A dúvida está no label como faço para utilizar um label apenas, mudando apenas o número dele como foi efetuado com o fieldvalues.
Var Conta :Integer;
Tipo :String;
begin
For Conta := 1 to 5 do
begin
Tipo := ´Valor´ + IntToStr(Conta);
Labelx.caption := dm1.Vendas.Fieldvalues[Tipo];
end;
end
A dúvida está no label como faço para utilizar um label apenas, mudando apenas o número dele como foi efetuado com o fieldvalues.
Viperflexmaster
Curtir tópico
+ 0
Responder
Post mais votado
11/08/2008
Olá!
Faça o seguinte:
Faça o seguinte:
Var Conta, i : Integer; Tipo, NomeLabel :String; begin For Conta := 1 to 5 do begin Tipo := ´Valor´ + IntToStr(Conta); NomeLabel := ´Label´ + IntToStr(Conta); for i := 0 to ComponentCount -1 do if (Components[i] is TLabel) and (Components[i].Name = NomeLabel) then begin TLabel(Components[i]).Caption := dm1.Vendas.Fieldvalues[Tipo].AsString; end; end; end;
Webjoel
Responder
Mais Posts
11/08/2008
Paulo_amorim
Olá
Esse algoritmo tem menor desempenho quanto mais componentes o formulário tiver.
Para se evitar o laço, pode-se procurar diretamente os labels com a função FindComponent(name: String)
Espero que ajude
Até+
Esse algoritmo tem menor desempenho quanto mais componentes o formulário tiver.
Para se evitar o laço, pode-se procurar diretamente os labels com a função FindComponent(name: String)
var i: Integer; begin for i := 1 to 5 do begin try TLabel(FindComponent(´Label´ + IntToStr(i)) ).Caption := dm1.Vendas.Fieldvalues[Tipo].AsString; catch <seu tratamento de erro> end; end;
Espero que ajude
Até+
Responder
11/08/2008
Marco Salles
acho que todo mundo sem querer foi na sua onda
dm1.Vendas.Fieldvalues[Tipo]; :?: :?: :?:
o certo seria assim :
dm1.Vendas.Fieldvalues[Tipo].asstring;
Aonde Tipo tem quer ser uma String...
Portando [u:d05fe291cf]´acho´[/u:d05fe291cf] que nun Rola variando i do jeito que fora colocado...
Outra opção , e tentar fazer ...
dm1.Vendas.Fieldvalues[Tipo]; :?: :?: :?:
o certo seria assim :
dm1.Vendas.Fieldvalues[Tipo].asstring;
Aonde Tipo tem quer ser uma String...
Portando [u:d05fe291cf]´acho´[/u:d05fe291cf] que nun Rola variando i do jeito que fora colocado...
Outra opção , e tentar fazer ...
var i:integer; umlabel:TLabel; begin with SeuDataSet do begin for i:=0 to FieldCount -1 do begin Fields.Fields[i].FocusControl; umLabel:=TLabel(ActiveControl.Parent.Controls[i]); umLabel.Caption:=FieldList[i].AsString; end; end; end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)