propriedade visible em grupo
Não sei se é possivel controlar a propriedade de vários edit a partir de uma variavel.
Um exemplo:
Tenho 12 edits:
Tenho uma variavel integer, ´param´.
De acordo com o valor dela eu gostaria de deixar os edits abaixo invisíveis.
No caso se param é 1, todos os edits a baixo do 1 ficam invisiveis, se é 2 todos os edits abaixo do 2 ficam invisíveis, e assim sucessivamente.
Mas no caso eu tenho 12 edits.
Eu poderia fazer um case na variavel, e ir fazendo na mão um por um, mas imaginem a quantidade de linhas que vai dar isso...
Será que tem alguma maneira diferente para essa situação ?
Obrigado.
Um exemplo:
Tenho 12 edits:
editA1 editB1 editC1 editA2 editB2 editC2 editA3 editB3 editC3 editA4 editB4 editC4 editA5 editB1 editC5 ...
Tenho uma variavel integer, ´param´.
De acordo com o valor dela eu gostaria de deixar os edits abaixo invisíveis.
No caso se param é 1, todos os edits a baixo do 1 ficam invisiveis, se é 2 todos os edits abaixo do 2 ficam invisíveis, e assim sucessivamente.
Mas no caso eu tenho 12 edits.
Eu poderia fazer um case na variavel, e ir fazendo na mão um por um, mas imaginem a quantidade de linhas que vai dar isso...
Será que tem alguma maneira diferente para essa situação ?
Obrigado.
Lynx
Curtidas 0
Respostas
Lynx
11/10/2005
só para acrescentar, da para criar procedimentos de 3 em 3.
procedure linha1
nome dos edits1
.. ..2
.. ..2
isso já diminui bastante, mas mesmo assim da muita linha, será que tem algo diferente para essa situação.
procedure linha1
nome dos edits1
.. ..2
.. ..2
isso já diminui bastante, mas mesmo assim da muita linha, será que tem algo diferente para essa situação.
GOSTEI 0
Imoreira
11/10/2005
Dá uma adaptada aí.
var
x,y,z,param:integer;
begin
param:=2;
for y:=0 to painel.controlcount-1 do begin
z:= strtoint(copy((painel.controls[y] as tedit).name,pos(´Edit´,(painel.controls[y] as tedit).name)+4,2));
for x:=param to painel.controlcount-1 do begin
if (z=x) then begin
(painel.controls[x] as tedit).visible:=false;
end;
end;
end;
end;
var
x,y,z,param:integer;
begin
param:=2;
for y:=0 to painel.controlcount-1 do begin
z:= strtoint(copy((painel.controls[y] as tedit).name,pos(´Edit´,(painel.controls[y] as tedit).name)+4,2));
for x:=param to painel.controlcount-1 do begin
if (z=x) then begin
(painel.controls[x] as tedit).visible:=false;
end;
end;
end;
end;
GOSTEI 0
Lynx
11/10/2005
pessoal, desculpe pelo tópico.
Acabei fazendo da maneira que postei acima...
Ficou bem menor.
Mas fiquem a vontade para postar outras maneiras.
valeu
Acabei fazendo da maneira que postei acima...
Ficou bem menor.
Mas fiquem a vontade para postar outras maneiras.
valeu
GOSTEI 0
Marcio.theis
11/10/2005
Vc pode fazer desta forma, pode melhorar o código ainda:
var x: integer; texto: String; begin for x:=0 to Self.ComponentCount - 1 do begin if Self.Components[x].ClassType = TEdit then begin texto:=(Self.Components[x] as TEdit).Name; texto:=Copy(texto,Length(texto),1); if StrToInt(texto) > param then (Self.Components[x] as TEdit).Visible:=False; end; end;
GOSTEI 0
Lynx
11/10/2005
Postei bem na hora que vocês postou.
Certeza vai diminuir mais ainda.
valeu
Certeza vai diminuir mais ainda.
valeu
GOSTEI 0
Marcio.theis
11/10/2005
Uma coisa que vc pode fazer é setar a propriedade [i:a10eaa39c4]Tag[/i:a10eaa39c4] dos edit´s de acordo com o seu n°, ou seja, coloca os três primeiros como 1, depois 2, e assim até o 12°, ficando o código mais simples ainda:
var x: integer; begin for x:=0 to Self.ComponentCount - 1 do begin if Self.Components[x].ClassType = TEdit then if (Self.Components[x] as TEdit).Tag > param then (Self.Components[x] as TEdit).Visible:=False; end;
GOSTEI 0
Lynx
11/10/2005
e eu fazendo gambiarra, falta de conhecimento mesmo,ainda bem que eu não reclamo, pior é as pessoas que fazem isso e dizem que o pascal é muito lento para sistema.
valeu mesmo
valeu mesmo
GOSTEI 0
Lynx
11/10/2005
só mais uma pergunta, é possivel fazer isso com tag, mas em componentes diferentes, sem repetir.
Exemplo em TLabel, e TEDit ao mesmo tempo
Exemplo em TLabel, e TEDit ao mesmo tempo
GOSTEI 0
Marcio.theis
11/10/2005
sim... a única coisa que vc tera de alterar sera a função, que ficaria assim:
var x: integer; begin for x:=0 to Self.ComponentCount - 1 do begin if Self.Components[x].ClassType = TEdit then begin if (Self.Components[x] as TEdit).Tag > param then (Self.Components[x] as TEdit).Visible:=False; end else begin if Self.Components[x].ClassType = TLabel then if (Self.Components[x] as TLabel).Tag > param then (Self.Components[x] as TLabel).Visible:=False; end end; end;
GOSTEI 0
Lynx
11/10/2005
Valeu Mesmo !!
Está voando agora
Está voando agora
GOSTEI 0