Fórum propriedade visible em grupo #299143

11/10/2005

0

Não sei se é possivel controlar a propriedade de vários edit a partir de uma variavel.

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

Lynx

Responder

Posts

11/10/2005

Lynx

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.


Responder

Gostei + 0

11/10/2005

Imoreira

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;


Responder

Gostei + 0

11/10/2005

Lynx

pessoal, desculpe pelo tópico.
Acabei fazendo da maneira que postei acima...
Ficou bem menor.

Mas fiquem a vontade para postar outras maneiras.

valeu


Responder

Gostei + 0

11/10/2005

Marcio.theis

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;



Responder

Gostei + 0

11/10/2005

Lynx

Postei bem na hora que vocês postou.

Certeza vai diminuir mais ainda.

valeu


Responder

Gostei + 0

11/10/2005

Marcio.theis

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;



Responder

Gostei + 0

11/10/2005

Lynx

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


Responder

Gostei + 0

11/10/2005

Lynx

só mais uma pergunta, é possivel fazer isso com tag, mas em componentes diferentes, sem repetir.

Exemplo em TLabel, e TEDit ao mesmo tempo


Responder

Gostei + 0

11/10/2005

Marcio.theis

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;



Responder

Gostei + 0

11/10/2005

Lynx

Valeu Mesmo !!
Está voando agora


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar