ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Desabilitar/Habilitar campos do formulario

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Seg Fev 25, 2013 2:58 pm    Assunto: Desabilitar/Habilitar campos do formulario Responder com Citação

Ola.

Estou usando a seguinte Procedure para desabilitar os campos do meu formulário.

Código:
procedure TFrmCadBaixaEstoque.EnableDisableControls(Value: Boolean);
var
  i : integer;
begin
  {: faz um laço em todos os componentes}
  for i := 0 to ComponentCount -1 do
  begin
    if (Components[i] is TDBEdit) then
       (Components[i] as TDBEdit).Enabled := Value;

    if (Components[i] is TDBComboBox) then
       (Components[i] as TDBComboBox).Enabled := Value;

    if (Components[i] is TDBLookupComboBox) then
       (Components[i] as TDBLookupComboBox).Enabled := Value;

    if (Components[i] is TDBMemo) then
       (Components[i] as TDBMemo).Enabled := Value;

    if (Components[i]is TRxDBComboEdit) then
       (Components[i] as TRxDBComboEdit).Enabled := Value;

    if (Components[i] is TRxDBLookupCombo) then
       (Components[i] as TRxDBLookupCombo).Enabled := Value;

    if (Components[i]is TDBDateEdit) then
       (Components[i] as TDBDateEdit).Enabled := Value;
  end;
end;



Para cada um dos formularios eu tenho que colocar esse procedure para desabilitar os campos.

O que eu gostaria é de ter essa procedure em um unico local, tipo uma Unit global e depois chamar essa procedure no formulário que eu desejar. Sem ter que colocar o código completo em cada um dos formulário.

Estou começando agora a programar no delphi e por isso estou apanhando um pouco.

Se puderem dar uma ajuda agradeço.


Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
wjuniordias
Profissional
Profissional


Registrado: Sexta-Feira, 16 de Março de 2012
Mensagens: 667

MensagemEnviada: Seg Fev 25, 2013 3:01 pm    Assunto: Re: Desabilitar/Habilitar campos do formulario Responder com Citação

Você pode declarar esse procedimento na seção "Public" do formulário, desta forma, você consegue acessar de qualquer outro local, porém, aconselho você a criar esse procedimento numa Unit Global, como você disse...
_________________
"O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário MSN Messenger
CesarRocha
Mestre
Mestre


Registrado: Segunda-Feira, 30 de Mai de 2011
Mensagens: 794
Localização: São Paulo - SP

MensagemEnviada: Seg Fev 25, 2013 3:18 pm    Assunto: Responder com Citação

Boa tarde,

Crie uma nova unit (File > New > Unit), salve com o nome Biblioteca (ou o nome de sua preferência).

Adicione o seguinte código
Código:
unit Biblioteca;

interface

uses
  StdCtrls,
  Classes;

procedure EnableDisableControls(AOwner: TComponent; Value: Boolean);

implementation

procedure EnableDisableControls(AOwner: TComponent; Value: Boolean);
var
  i: integer;
  componente: TComponent;
begin
  {: faz um laço em todos os componentes}
  for i := 0 to AOwner.ComponentCount - 1 do
  begin
    {: facilitar a manipulação }
    componente := AOwner.Components[i];

    {: TEdit }
    if componente is TEdit then (componente as TEdit).Enabled := Value;
  end;
end;

end.


Explicação básica:

A procedure foi levemente alterada para possibilitar o funcionamento de forma genérica. O paramêtro AOwner representa o contêiner dos objetos, isto é, onde eles estão. Exemplo, pode ser um TForm, TPanel, etc... Ela vai ser usada para contar os objetos dentro desse contêiner.

A variável local componente é uma referência ao objeto encontrado, serve para facilitar a manipulação.

Exemplo de uso:

Após salvar a nova unit e fazer as devidas alterações...

Agora devemos declara-la na seção uses do formulário que irá usa-la.

Código:
uses Biblioteca

Ou pressione Alt + F11.

Pronto, agora você pode usar a nova unit no seu formulário.

Para testar
Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
  EnableDisableControls(Form1, False);
end;


Qualquer dúvida só avisar.

Bye.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
vilmar.souza
Novato
Novato


Registrado: Segunda-Feira, 26 de Julho de 2010
Mensagens: 68

MensagemEnviada: Ter Fev 26, 2013 9:14 am    Assunto: Responder com Citação

Grande CesarRocha.

Era isso mesmo que eu queria. Entendi perfeitamente sua explicação. Isso vai me ajudar na criação de novos procedimentos.

Valeu mesmo.


Braços.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB