Rodrigo Madureira Barbosa wrote:

> Pessoal, vê se alguém pode trocar uma idéia comigo...
> 
> Estou montando um CreateCustom com alguns parâmetros que serão padrões a
> todos os meus formulários...
> 
> 
> Ex.: 
> FormClass : TformClass;
> 
> TModeloBasico(FormClass).CreateCustom(Owner: TComponent; const FormName:
> String; FormStyle: TFormStyle; BorderStyle: TBorderStyle = bsSingle);
> 
> Mas sabemos que por override alguns formulários podem precisar de parâmetros
> adicionais...

É verdade. A sua classe abstrata tem que entender tudo o que ela pode 
receber, mesmo que ela não implemente tudo. Se você quiser que ela 
receba mais do que ela pode entender, você tem que criar propriedades 
nas classes decendentes e associar o valor depois de chamar o Create.

Por outro lado eu defendo a idéia de que um formulário não tem que 
entender bulhufas de regras de negócio, ou qualquer coisa que não tenha 
a ver com apresentação. Por exemplo, tipo de borda, tipo de formulário e 
etc. são bem vindos, muito embora você possa definir estas coisas 
diretamente no formulário e então basta dar um create do form sem ter 
que fazer ginástica.

Agora começa o problema mais complicado de resolver -- aonde raios 
colocar as regras que não são de apresentação dos dados? Falo um pouco 
sobre isto mais abaixo.


> FormClass : TformClass;
> 
> TCadGeral(FormClass).CreateCustom(Owner: TComponent; const FormName: String;
> FormStyle: TFormStyle; BorderStyle: TBorderStyle = bsSingle; Categoria:
> TCadGeral = tcgCliente);
> 
> Sendo assim, estou tentando bolar algo como uma procedure que crie os
> TFormClass que eu passar como parâmetro a partir de seu CreateCustom. O
> problema é que nessa procedure, eu também preciso passar os parâmetros do
> CreateCustom, e não estou conseguindo chegar a uma conclusão de como passar
> os parâmetros de telas que tenham um override do meu CreateCustom padrão...
> 
> Ex.:
> 
> Procedure CriarTela(Formulario: TFormClass; _Owner: TComponent; const
> _FormName: String; _FormStyle: TFormStyle; _BorderStyle: TBorderStyle =
> bsSingle);
> 
> CriarTela(TCidade,Application,’CIDADE’, fsMDIChild);
> 
> Problema:
> 
> --> CriarTela(TCadGeral,Application,’CADGERAL’,
> fsMDIChild,bsSingle,tcgFornecedor);
> 
> O parâmetro “tcgFornecedor”, é do CreateCustom do formulario TCadGeral, não
> do formulário padrão, que é referência para a procedure CriaTela...

O que este parâmetro faz?


> Não sei se me expressei bem, mas estou aguardando alguns comentários...
> 
> Se alguém puder me ajudar eu agradeço, caso contrário, se eu chegar a
> solução, posto aqui para todos...

Falo de uma opinião pessoal, e que é compartilhada por muita gente aqui 
e em fóruns de programação mundo afora: deixe para os formulários o que 
um formulário (visualmente falando) será capaz de entender. Quando 
partir para as regras do negócio, passe os dados para classes de negócio.

Construir uma classe de negócio é um "tróço" bastante complicado, então 
eu sugiro você usar um framework para te ajudar. InstantObjects, tiOPF, 
ECO (.net), Bold, Depo são alguns exemplos de framework que já possuem 
um release estável e que facilitam esta codificação, cada um com suas 
vantagens e desvantagens. Há ainda outros projetos que estão por vir, 
mas primeiro permita-me saber se você está realmente interessado no 
assunto para podermos continuar esta thread.

--
João Morais


-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 

Responder a