Fórum edit1 ativando outros edits #581132
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
Curtir tópico
+ 0Post 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
Gostei + 1
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;Gostei + 0
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;Gostei + 0
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;Gostei + 0
19/05/2017
Roberto Wutke
bons códigos ai!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)