2010/6/1 Paulo Coutinho <pa...@prsolucoes.com>: > Olá, > > Obrigado pelas criticas, com certeza ajudam muito. > > Mas vou explicar alguns detalhes. > > O framework utiliza o padrão DAO ou MODELO/GERENTE, então você não usa > diretamente componentes como ado ou dbx, você cria os modelos e o framework > se encarrega de montar baseado nas configurações do arquivo INI, embora você > até possa acessar o dbx ou ado pelo gerente, mas não recomendo. > > A transparência do framework permite deixar você livre de qual componente > suar, já que estou colocando os 2 padrões do delphi, mas nada impede de você > alterar o gerente para usar o UniDac por exemplo. > > Outra vantagem é você trabalhar com componentes desconectados e liberando da > memória o desnecessário, sempre criando e excluindo o objeto quando não usar > mais. > > Outra vantagem é você trabalhar com objetos , utilizando padrões e definindo > uma metodologia de desenvolvimento para seus projetos, ao invés de manipular > componentes, você vai manipular objetos, como : > > - cliente.nome > - mercadoria.valor > - pessoa.data_nascimento > - etc... > > Os códigos não são confusos, apenas IFs para saber se o grid tem item > selecionado e depois vem: > > > /////////////////////////// > gMembro := TPRFWK_Membro.Create; > > gMembro.ID := 1; //substitui por um numero > gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro; > > //estou dizendo neste bloco que criei um objeto da minha classe de dominio > "Membro", defini o atributo padrão "ID" para 1 e usei o gerente para obter > este objeto pela chave "ID". > > //por padrão todas os modelos do dominio possuem o atributo "ID" (pode ser > alterado na classe pai dos modelos) > /////////////////////////// > > //////////////////////////////////// > > if (gMembro <> nil) then > begin > gMembro.nome := edNome.Text; > gGR_Membro.alterar(gMembro); > gMembro.Free; > end; > > carregarGrid(); > > > //aqui estou verificando se o valor retornado para meu objeto não está nulo, > ou seja, se realmente encontrou o Membro pelo ID dele. > > Em seguida defino o nome do membro como o texto do edit e uso o gerente para > alterá-lo e libero o modelo recebido da memória. > > //////////////////////////////////// > > Não vi complicação. E em nenhum momento me preocupei com componentes. Essa é > a regra. Esqueça esse lance de componente, foque na orientação a objetos. > > > Mais uma classe útil, é usada aqui: > > /////////////////////////// > lTemp := > MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('APLICACAO','titulo', > ''); > self.Caption := lTemp; > > //aqui eu estou usando uma classe do framework para obter do arquivo de > configuração o TITULO da aplicação, mas em aplicações que tenho aqui, possuo > trocentas configurações pelo INI, então ajuda bastante. > > /////////////////////////// > > > Mais alguma dúvida?
Falei que o código é confuso, não que eu tinha dúvidas sobre como ele trabalha. É confuso porque escreve-se demais para obter coisas simples; é burocrático, na minha opinião, claro. Em todo caso, pode ser bem útil para várias pessoas. Parabéns pela divulgação. Marcos Douglas