| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Seg Fev 25, 2013 2:58 pm Assunto: Desabilitar/Habilitar campos do formulario |
|
|
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 |
|
 |
wjuniordias Profissional


Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Seg Fev 25, 2013 3:01 pm Assunto: Re: Desabilitar/Habilitar campos do formulario |
|
|
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 |
|
 |
CesarRocha Mestre

Registrado: Segunda-Feira, 30 de Mai de 2011 Mensagens: 794 Localização: São Paulo - SP
|
Enviada: Seg Fev 25, 2013 3:18 pm Assunto: |
|
|
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.
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 |
|
 |
vilmar.souza Novato

Registrado: Segunda-Feira, 26 de Julho de 2010 Mensagens: 68
|
Enviada: Ter Fev 26, 2013 9:14 am Assunto: |
|
|
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 |
|
 |
|