Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 581139
            [titulo] => edit1 ativando outros edits
            [dataCadastro] => DateTime Object
                (
                    [date] => 2017-05-09 11:55:18
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 454364
            [status] => A
            [isExample] => -1
            [NomeUsuario] => Roberto Wutke
            [Login] => robertowutke
            [Apelido] => 
            [Foto] => 
            [Conteudo] => Fala jovem, tudo bom?

Tipo tenta usar a propriedade Tag dos edits... cada edit com sua tag correspondente, ex. Edit1 = Tag 1 assim até o Edit 14 com Tag 14..

Quando vc mudar o status do edit, vc recebe a tag dele, varTag := (Sender as TEdit).Tag.

Depois vc faz um laço e verifica se a tag é menor que a que vc tem... se for, ele deixa true

mais ou menos assim

for i := Nome_Form.ComponentCount -1 downto 0 do //vai correndo os componentes
begin
if (Nome_Form.Components[i] is TEdit) then //se for edit vai entrar
if (Nome_Form.Components[i] as TEdit).tag < varTag then // se a tag dele for menor que seu edit, vai passar pra ativar
(Nome_Form.Components[i] as TEdit).Enable := True; // Ativando o edit.
end;


desculpa se teve algum erro de sintaxe... tentei lembrar de cabeça...

espero ter ajudado.

Bons códigos! ) )

edit1 ativando outros edits

David
   - 09 mai 2017

Prezados,
Sou novo com o delphi, e gostaria de saber como faço para melhorar este 'case', pois tenho 14 edits e o codigo está ficando enorme.
Pensei em fazer algo do tipo: quando a propriedade do edit5 mudar os outros edits 1,2,3 e 4 mudam também sem precisar digitar um a um
#Códigocase i of
1:begin
edit1.Enabled:=true;
end;
2:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
end;
3:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
end;
4:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
end;
5:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
end;
6:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
edit6.Enabled:=true;
end;
7:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
edit6.Enabled:=true;
edit7.Enabled:=true;
end;
.
.
.
14:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
edit6.Enabled:=true;
edit7.Enabled:=true;
.
.
.
edit14.Enabled:=true;

end;

Post mais votado

Roberto Wutke
   - 09 mai 2017

Fala jovem, tudo bom?

Tipo tenta usar a propriedade Tag dos edits... cada edit com sua tag correspondente, ex. Edit1 = Tag 1 assim até o Edit 14 com Tag 14..

Quando vc mudar o status do edit, vc recebe a tag dele, varTag := (Sender as TEdit).Tag.

Depois vc faz um laço e verifica se a tag é menor que a que vc tem... se for, ele deixa true

mais ou menos assim

for i := Nome_Form.ComponentCount -1 downto 0 do //vai correndo os componentes
begin
if (Nome_Form.Components[i] is TEdit) then //se for edit vai entrar
if (Nome_Form.Components[i] as TEdit).tag < varTag then // se a tag dele for menor que seu edit, vai passar pra ativar
(Nome_Form.Components[i] as TEdit).Enable := True; // Ativando o edit.
end;

desculpa se teve algum erro de sintaxe... tentei lembrar de cabeça...

espero ter ajudado.

Bons códigos!

David
   - 09 mai 2017


Citação:
Prezados,

Sou novo com o delphi, e gostaria de saber como faço para melhorar este 'case', pois tenho 14 edits e o codigo está ficando enorme.
Pensei em fazer algo do tipo: quando a propriedade *ENABLED* do edit5 mudar os outros edits 1,2,3 e 4 mudam também sem precisar digitar um a um

#Códigocase i of
1:begin
edit1.Enabled:=true;
end;
2:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
end;
3:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
end;
4:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
end;
5:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
end;
6:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
edit6.Enabled:=true;
end;
7:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
edit6.Enabled:=true;
edit7.Enabled:=true;
end;
.
.
.
14:begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
edit5.Enabled:=true;
edit6.Enabled:=true;
edit7.Enabled:=true;
.
.
.
edit14.Enabled:=true;

end;

David
   - 09 mai 2017

Amigo Roberto, desculpe minha ignorância..rs
Este FOR eu ponho dentro de cada case 1: 2: ... 14:?
#Códigocase i of
14:begin
edit14.Enabled:=true;
vartag:=(Sender as TEdit).Tag;
for i:= ComponentCount -1 downto 0 do
if (Components[i] is TEdit) then
if (Components[i] as TEdit).tag<vartag then
(Components[i] as TEdit).Enabled:=true;
end;


outra coisa minha variavel vartag não está pegando o valor do tag (Declarei a mesma como integer) quando faço sem usar o case!

#Códigoprocedure TfCadEscala.editQtFuncChange(Sender: TObject);
var vartag, i:integer;
begin
edit14.Enabled:=true; //Coloquei para testar
vartag:=(Sender as TEdit).Tag;
ShowMessage(inttostr(vartag));
for i:= ComponentCount -1 downto 0 do
if (Components[i] is TEdit) then
if (Components[i] as TEdit).tag<vartag then
(Components[i] as TEdit).Enabled:=true; end;

David
   - 10 mai 2017

Prezados!

Resolvi passando o ciclo numa edit e usando a idéia do amigo Roberto! Muito Obrigado! Segue abaixo!
#Códigoprocedure TfCadEscala.editQtFuncChange(Sender: TObject);
var i:integer;
begin
if strtoint(editCiclo.Text)<=14 then
Begin
for i:= ComponentCount -1 downto 0 do
if (Components[i] is TEdit) then
if (Components[i] as TEdit).tag<=strtoint(editCiclo.text) then
(Components[i] as TEdit).Enabled:=true;
End
else
begin
if strtoint(editCiclo.Text)<=28 then
begin
for i:= ComponentCount -1 downto 0 do
if (Components[i] is TEdit) then
if ((Components[i] as TEdit).tag<=strtoint(editCiclo.text)) and ((Components[i] as TEdit).tag>14) then
(Components[i] as TEdit).Enabled:=true;
end;
end;

end;

Roberto Wutke
   - 19 mai 2017

Desculpe a demora pra responder, é que a gente não é avisado sobre posts que respondemos.... Mas que bom que deu certo man, qualquer coisa tamo ai....

bons códigos ai!