Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thestomper55

Repetir procedimento alterando nome dos objetos de acordo com a var

Recommended Posts

Opa galera, estou com uma dúvida na linguagem Object Pascal e não tenho ideia de como posso para verificar um componente específico de acordo com a variável contador (que é incrementada 1 em 1 em uma estrutura de repetição).

 

O código é este

 

 

    If chk1.Enabled=TRUE then
    begin
        edit_nome1.Enabled;
        edit_diretorio1.Enabled;
        btn_arq1.Enabled;
    end;

 

Eu queria que ele verificasse o chk1, chk2, chk3, etc.. no caso todos os objetos tem o mesmo nome, só mudam o número no final, justamente para poder usar um while ou for, mas não sei como posso fazer isso, em outras linguagens, eu consegui fazer tipo assim

if (chk%d, contador)==true{edit_nome%d, contador=enable //não exatamente.. faz tempo que fiz, mas é por aí.. }

 

Alguém poderia me ajudar?
obs: o CHK é um CheckBox

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

No seu caso acredito que independente de qual checkbox esteja marcado, o que você deseja é habilitar/desabilitar alguns controles de acordo com alguma situação.

 

Você poderia simplesmente fazer algo nesse sentido:

 

edit_nome1.enabled := ckb1.Enabled;

 

Obs: Geralmente eu costumo tratar esse tipo de situação quando meu checkbox foi "marcado", mas no seu caso não sei se é isso que você deseja. Caso seja, você pode simplesmente fazer:

 

 

edit_nome1.enabled := ckb1.Checked;

Veja se é isso que você precisa.
Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso o que você quer é um Array de TCheckBox.

para fazer isso vá na sua class, adicione uma nova variavel com o nome desejado (CHK) e seta ele como Array, deste forma:

 

CHK: Array [1..3] of TComboBox;

após isso, você terá que chamar o procedimento "OnCreate" ou "OnActivete" da sua class, e fazer a criação dos elementos deste forma:

CHK[1] := TComboBox.Create(Self);
CHK[2] := TComboBox.Create(Self);
CHK[3] := TComboBox.Create(Self);

além de colocar todas as suas propriedades...

 

Depois de tudo isso, vc poderá cria o seu for sem problemas, como neste exemplo:

for i:=1 to 3 do
begin
  CHK[i].Enabled;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela dica Ismaeldm, ainda tem uma maneira mais fácil ainda baseado na solução que o Ismaeldm deu.

 

Nas suas variáveis, você entra com o Array, normalmente (lembrando de declarar uma variável global)

 


CHK: Array [1..10] of TCheckBox;

Depois disso, vá no evento OnActivate do seu Form e associe cada CheckBox criado com a variável

 

CHK[1]:=CheckBox1;
CHK[2]:=CheckBox2;
CHK[3]:=CheckBox3;
CHK[4]:=CheckBox4;
CHK[5]:=CheckBox5;
CHK[6]:=CheckBox6;
CHK[7]:=CheckBox7;
CHK[8]:=CheckBox8;
CHK[9]:=CheckBox9;
CHK[10]:=CheckBox10;

Agora você já pode usar seu laço de repetição para fazer as verificações

 

for i:=1 to 10 do
begin
if CHK[i].Checked=TRUE then
    begin
        //condições se verdadeiro
    end
else
    begin
        //condições se falso
    end;
end;

Você pode usar o mesmo conceito para Edits, Labels, Buttons, e qualquer outro objeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra forma que esqueci de comentar e que é ainda mais simples (kkk) é usar um laço de repetição na própria criação, neste caso é só fazer:

 

for i:=1 to 10 do
begin
  CHK[i] := TComboBox.Create(Self);
  CHK[i].Parent := Self;
  CHK[i].Top := i*30;
end;

repare que neste código também está adicionado a propriedade "Top", para evitar que os ComboBox ficam empilhados um em cima doutro :yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.