Fórum Como mudar o conteúdo das labels em um laço for? #362331
10/08/2008
0
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
+ 0Post mais votado
11/08/2008
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
Gostei + 1
Mais Posts
11/08/2008
Paulo_amorim
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é+
Gostei + 0
11/08/2008
Marco Salles
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;
Gostei + 0
15/08/2008
Viperflexmaster
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)