desativar todos os componentes de um form

Delphi

07/08/2012

Oi gente, tem como desativar todos os componentes do meu form?

Estou fazendo assim atualmente

btnnovo.enabled:=false;
btgravar.enabled:=false;
btndeletar.enabled:=false;
btcancelar.enabled:=false;


Até ai tudo bem, mas se forem 100 componentes no meu formulário, vai dar um trabalhão, alguém tem ideia de como melhorar isso ou só tem deste jeito mesmo?

Obrigada..
Carla Batista

Carla Batista

Curtidas 0

Melhor post

Bruno Leandro

Bruno Leandro

08/08/2012

Ola é simples

o IsPublishedProp esta verificando se no componente tal existe a propriedade enabled IsPublishedProp(Components[i], Enabled)
e o SetVariantProp esta setando false na propriedade enabled no componente tal SetVariantProp(Components[i], Enabled, False);
GOSTEI 1

Mais Respostas

Bruno Leandro

Bruno Leandro

07/08/2012

Ola Carla voce pode utilizar conforme modelo a seguir, o ComponentCount retorna o numero de componentes na tela e o if verifica se existe o Enabled se existir ele seta como false

for i := 0 to Screen.ActiveForm.ComponentCount-1 do
begin
if IsPublishedProp(Components[i], Enabled) then
SetVariantProp(Components[i], Enabled, False);
end;
GOSTEI 0
Carla Batista

Carla Batista

07/08/2012

Oi Bruno, que código hein? rsrs, não entendi foi nd, ispublish? o que isso faz?

Gostaria de entender pra poder adaptar :(..

Obrigada!
GOSTEI 0
Marco Salles

Marco Salles

07/08/2012

Sem utilizar Rtti acredito que funciona

procedure Habilitar(inibir:boolean;_Parent:Twincontrol;_Tag:word=0);
var
  I: Integer;
begin
 for I := 0 to pred(_Parent.ControlCount) do
   if _Parent.Controls[i].Tag =_Tag then  //pre seleção
     _Parent.Controls[i].Enabled:=inibir;
end;


para chamar

desta forma vc seleciona os controles que irão sofrer a acão atraves de uma seleção , utilizando a propriedade
tag do mesmo .. No caso anterior somente componetes definidos com o valor do tag zero (Padrão) serão afetados

procedure TForm2.Button1Click(Sender: TObject);
begin
Habilitar(false,self,0);
end;


de qualquer modo todos os caminhos vão a Roma
GOSTEI 1
Carla Batista

Carla Batista

07/08/2012

Obrigada Bruno, agora entendi a sua explicação. muito legal!
Obrigada mesmo..

GOSTEI 0
Carla Batista

Carla Batista

07/08/2012

Marco, realmente todos os caminhos levam a Roma!

Gostei do seu exemplo, como fazer a mesma coisa de várias formas, muito legal, vocês são feras!

Obrigada gente, agora meu projeto esta ficando muito bonito, dessa forma evita mts erros do usuário.

Até mais
GOSTEI 0
POSTAR