Fórum desativar todos os componentes de um form #421189

07/08/2012

0

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

Responder

Post mais votado

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);

Bruno Leandro

Bruno Leandro
Responder

Gostei + 1

Mais Posts

08/08/2012

Bruno Leandro

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

Gostei + 0

08/08/2012

Carla Batista

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

Gostaria de entender pra poder adaptar :(..

Obrigada!
Responder

Gostei + 0

09/08/2012

Marco Salles

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
Responder

Gostei + 1

11/08/2012

Carla Batista

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

Responder

Gostei + 0

11/08/2012

Carla Batista

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
Responder

Gostei + 0

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

Aceitar