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