edit1 ativando outros edits

09/05/2017

0

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

case 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

David

Responder

Post mais votado

09/05/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!

Roberto Wutke

Roberto Wutke
Responder

Mais Posts

09/05/2017

David

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

case 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;
Responder

09/05/2017

David

Amigo Roberto, desculpe minha ignorância..rs
Este FOR eu ponho dentro de cada case 1: 2: ... 14:?
case 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!

procedure 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;
Responder

10/05/2017

David

Prezados!

Resolvi passando o ciclo numa edit e usando a idéia do amigo Roberto! Muito Obrigado! Segue abaixo!
procedure 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;
Responder

19/05/2017

Roberto Wutke

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!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar