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?



Em 31 de maio de 2010 09:09, Marcos Douglas <m...@delfire.net> escreveu:

>
>
> 2010/5/30 Paulo Coutinho <pa...@prsolucoes.com <paulo%40prsolucoes.com>>:
>
> > Alguém testou?
> >
> > Tem alguma sugestão?
> >
>
> Não testei, mas vi o código.
> Se está buscando opiniões, espero que aceite as críticas construtivas
> abaixo:
>
> - Não entendi porque o framework é para acesso a dados. Isso já temos
> aos montes por aí.
> - Existem várias classes praticamente sem código; ou elas são
> desnecessárias ou imcompletas.
> - Na classe TPRFWK_Gerente (sugiro utilizar nomes bem menores nas
> classes e units) vc tem atributos do tipo TPRFWK_ClientDataSet e
> TPRFWK_ADODataSet. Se o framework é para "acesso a dados de forma
> transparente" vc não deveria "amarrar" a forma de conexão; nem todos
> utilizam ClientDataSet.
> - unit projeto_teste\UFrmPrincipal.pas possui códigos bem confusos:
> procedure TFrmPrincipal.alterarItem;
> begin
> if (lvItens.ItemIndex > -1) then
> begin
> gMembro := TPRFWK_Membro.Create;
>
> gMembro.ID := StrToInt(lvItens.Items[lvItens.ItemIndex].Caption);
> gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro;
>
> if (gMembro <> nil) then
> begin
> gMembro.nome := edNome.Text;
> gGR_Membro.alterar(gMembro);
> gMembro.Free;
> end;
>
> carregarGrid();
> end;
> end;
>
> procedure TFrmPrincipal.excluirItem;
> begin
> if (lvItens.ItemIndex > -1) then
> begin
> gMembro := TPRFWK_Membro.Create;
>
> gMembro.ID := StrToInt(lvItens.Items[lvItens.ItemIndex].Caption);
> gMembro := gGR_Membro.obter(gMembro) as TPRFWK_Membro;
>
> if (gMembro <> nil) then
> begin
> gGR_Membro.excluir(gMembro);
> gMembro.Free;
> end;
>
> carregarGrid();
> end;
> end;
>
> procedure TFrmPrincipal.inicializar;
> var
> lTemp : String;
> begin
> //título
> lTemp :=
> MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('APLICACAO',
> 'titulo', '');
> self.Caption := lTemp;
>
> //conexão
> //TSqlConnection ou TAdoConnection
> gConexao := TPRFWK_Conexao.Create;
> gConexao.vendorlib :=
>
> MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO',
> 'vendorlib', '');
> gConexao.libraryName :=
>
> MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO',
> 'libraryname', '');
> gConexao.criarConexao(
>
> MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO',
> 'driver', ''),
>
>
> MD_PRFWK_Utilidades.TPRFWK_Utilidades.obterInstancia().obterConfiguracao('CONEXAO',
> 'nomeconexao', '')
> );
> gConexao.conectar;
> end;
>
> Sem manual e/ou exemplos claros, fica muito dificil o pessoal começar
> a utilizar.
>
> Marcos Douglas
>  
>



-- 
Atenciosamente,
Paulo Coutinho.
Blog: www.prsolucoes.com/blog
Site: www.prsolucoes.com
Msn:  pa...@prsolucoes.com
Skype: paulo.prsolucoes
Consultor Certificado Bindows


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

-- 
<<<<< 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:
    delphi-br-ow...@yahoogrupos.com.br
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:
    delphi-br-unsubscr...@yahoogrupos.com.br

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


Responder a