Fórum Parametrizando tudo.... É melhor assim? #228151
27/04/2004
0
Bom dia Amigos.. vejam se podem me ajudar...
Estou com um projeto em desenvolvimento, e estou usando o conceito de herança entre forms.
Centralizei várias procedures em uma unica unit para tramento de dados, limpeza de campos dos forms, validação de campos em branco, enfim... Está tudo centralizado e as procedures são controladas pela chamada conforme os parametros.
Vejam o que eu fiz...
Como as procedures devem ser chamadas passando-se os parametros para a execução, então tive que declarar varias variaveis na unit(central onde ficam as procedures) como globais(globais pois as mesmas variaveis/parametros são usadas em varias procedures), e esta unit está inserida na uses do form pai(herança).
No show dos form´s filhos eu passo para as variaveis que serão usadas como parametros, os componentes que eu quero que sejam tratados nas procedures, exemplo:
Var (Declarada na unit dos procedimentos)
E1, E2, E3, E4......
No evento show do form filho, eu passo à estas variaveis os componentes edit´s do form:
E1 := edtNome;
E2 := edtEndereco;
E3 := edtBairro;
Etc....
Antes de passar os valores(edits) acima para as variaveis eu inicializo todas em NIL, e na procedure por exemplo de tratamento para limpeza dos campos eu faço o seguinte:
If E1 <> Nil Then
E1.Clear;
If E2 <> Nil Then
E2.Clear;
Etc...
Para chamar a procedure, por exemplo de limpeza dos campos fica assim Limpacampos(NomeForm,E1,E2,E3.....)
Esta lógica é interessante, pois no show dos forms(filho) basta passar as variaveis que serão os parametros da chamada, o nome dos componentes que quero tratar nas procedures que fica tudo centralizado e objetivo.
Acontece que estou tendo que declarar muitas variaveis E1, E2, E3.... enfim... pois em cada form tenho quantidades diferentes de edit´s. Acho que muitas variaveis(globais) na unit que centralizo as procedures poderá me dar problemas futuros. Para se ter noção, entre edit´s combos, etc, já tenho umas 50 variaveis declaradas como global na unit, e devem ser globais, pois uso elas em varias procedures, não somente para limpar campos, mas para passar dados as tabelas, validar se campos estão em branco antes de gravar, etc.
Eu queria saber se alguém poderia me ajudar, dizendo se ao inves de eu usar as variaveis nas procedures para tratamento dos campos, eu poderia usar diretamente o nome do componente(edit) diretamente. isso evitaria que eu tivesse que ficar declarando varias variaveis que serão os parametros para a chamada ás procedures...
Tipo imaginei em fazer um teste usando
If Assigned(FormAtual) Then //Testa se o form existe
E1.Clear;
E2.Clear;
Mas se estou certo neste caso os edits do meu form teria que tem o nome identico ao da procedure, ao inves de edtNome teria que ser E1.
A minha ideia é parametrizar o codigo ao maximo, para que bastando eu fazer a chamada a procedure, eu não preciso ficar reprogramando cada form, haja visto que estou usando herança. no form pai eu apenas faço as chamdas as procedures, nos forms filho, ficaria somente a forma~tação de tela.
Amigos se puderem me ajudar com esta duvida ficarei muito grato.
Um abraço.
Pablo - marília/SP
Estou com um projeto em desenvolvimento, e estou usando o conceito de herança entre forms.
Centralizei várias procedures em uma unica unit para tramento de dados, limpeza de campos dos forms, validação de campos em branco, enfim... Está tudo centralizado e as procedures são controladas pela chamada conforme os parametros.
Vejam o que eu fiz...
Como as procedures devem ser chamadas passando-se os parametros para a execução, então tive que declarar varias variaveis na unit(central onde ficam as procedures) como globais(globais pois as mesmas variaveis/parametros são usadas em varias procedures), e esta unit está inserida na uses do form pai(herança).
No show dos form´s filhos eu passo para as variaveis que serão usadas como parametros, os componentes que eu quero que sejam tratados nas procedures, exemplo:
Var (Declarada na unit dos procedimentos)
E1, E2, E3, E4......
No evento show do form filho, eu passo à estas variaveis os componentes edit´s do form:
E1 := edtNome;
E2 := edtEndereco;
E3 := edtBairro;
Etc....
Antes de passar os valores(edits) acima para as variaveis eu inicializo todas em NIL, e na procedure por exemplo de tratamento para limpeza dos campos eu faço o seguinte:
If E1 <> Nil Then
E1.Clear;
If E2 <> Nil Then
E2.Clear;
Etc...
Para chamar a procedure, por exemplo de limpeza dos campos fica assim Limpacampos(NomeForm,E1,E2,E3.....)
Esta lógica é interessante, pois no show dos forms(filho) basta passar as variaveis que serão os parametros da chamada, o nome dos componentes que quero tratar nas procedures que fica tudo centralizado e objetivo.
Acontece que estou tendo que declarar muitas variaveis E1, E2, E3.... enfim... pois em cada form tenho quantidades diferentes de edit´s. Acho que muitas variaveis(globais) na unit que centralizo as procedures poderá me dar problemas futuros. Para se ter noção, entre edit´s combos, etc, já tenho umas 50 variaveis declaradas como global na unit, e devem ser globais, pois uso elas em varias procedures, não somente para limpar campos, mas para passar dados as tabelas, validar se campos estão em branco antes de gravar, etc.
Eu queria saber se alguém poderia me ajudar, dizendo se ao inves de eu usar as variaveis nas procedures para tratamento dos campos, eu poderia usar diretamente o nome do componente(edit) diretamente. isso evitaria que eu tivesse que ficar declarando varias variaveis que serão os parametros para a chamada ás procedures...
Tipo imaginei em fazer um teste usando
If Assigned(FormAtual) Then //Testa se o form existe
E1.Clear;
E2.Clear;
Mas se estou certo neste caso os edits do meu form teria que tem o nome identico ao da procedure, ao inves de edtNome teria que ser E1.
A minha ideia é parametrizar o codigo ao maximo, para que bastando eu fazer a chamada a procedure, eu não preciso ficar reprogramando cada form, haja visto que estou usando herança. no form pai eu apenas faço as chamdas as procedures, nos forms filho, ficaria somente a forma~tação de tela.
Amigos se puderem me ajudar com esta duvida ficarei muito grato.
Um abraço.
Pablo - marília/SP
Pablo_lima
Curtir tópico
+ 0
Responder
Posts
27/04/2004
Bico
Bom dia.
Eu faria da seguinte forma:
Alteraria a procedure, passando apenas o FormFilho como parametro, algo do tipo:
Espero ter ajudado.
Fernando.
Eu faria da seguinte forma:
Alteraria a procedure, passando apenas o FormFilho como parametro, algo do tipo:
procedure LimpaCampos(FormFilho: TForm);
var
i: integer;
begin
for i := 0 to FormFilho.ComponentCount - 1 do
begin
{ Edit }
if (FormFilho.Components[i] is TEdit) then
begin
with (FormFilho.Components[i] as TEdit) do
begin
Text := ´´;
end;
end;
{ ComboBox }
if (FormFilho.Components[i] is TComboBox) then
begin
with (FormFilho.Components[i] as TComboBox) do
begin
ItemIndex := -1;
end;
end;
end;
end;Espero ter ajudado.
Fernando.
Responder
Gostei + 0
27/04/2004
Rômulo Barros
[color=red:3a4a588cdd]bico[/color:3a4a588cdd] resolveu o problema. A solução que [color=red:3a4a588cdd]bico[/color:3a4a588cdd] apresenta é perfeita, e muito pouco utizado por programadores. Tb conhecida como [color=red:3a4a588cdd]TypeCast[/color:3a4a588cdd];
Sem mais...
Sem mais...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)