edit1 ativando outros edits
09/05/2017
0
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
Post mais votado
09/05/2017
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
Mais Posts
09/05/2017
David
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;
09/05/2017
David
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;
10/05/2017
David
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;
19/05/2017
Roberto Wutke
bons códigos ai!
Clique aqui para fazer login e interagir na Comunidade :)