Oi Romário, Valeu pelas dicas. Aprendi MVC com java e o conceito é um pouco diferente do que você exemplificou em Delphi.
Por exemplo em java temos: Classe Limite que é a interface Classe Controle que é a classe responsável pela regra de negócio, e por salvar os dados nos atributos da Classe Entidade Classe Entidade é a classe que contém os atributos e os métodos de acesso. Pelo seu exemplo o limite chama os métodos da entidade (Classe, como você definiu) e a entidade chama os métodos da classe controle (DataModule) para acessar o banco de dados. Romario (Listas) escreveu: > Vou dar um exemplo básico utilizando a sua dúvida com o insert. > > ================================================================= > > Na Interface: > > Type > > TfmCliente = Class(TObject) > > {Lista de Componentes do Formulário} > ... > > Procedure FormCreate(Sender: TObject); > Procedure FormDestroy(Sender: TObject); > Procedure btnSaveClick(Sender: TObject); > > Private > { Private declarations } > Public > { Public declarations } > End; > > Var > fmCliente: TfmCliente; > > Implementation > > {$R *.dfm} > > Var > Cliente: TCliente; > > Procedure TfmCliente.FormCreate(Sender: TObject); > Begin > Inherited; > Cliente := TCliente.Create; > End; > > Procedure TfmCliente.FormDestroy(Sender: TObject); > Begin > FreeAndNil(Cliente); > Inherited; > End; > > Procedure TfmCliente.btnSaveClick(Sender: TObject); > Begin > If edtNome.Text <> '' Then > Begin > Funcionario.Nome := edtNome.Text; > ... > If Funcionario.Salvar Then > Begin > edtNome.Clear; > ... > End > Else > Begin > ShowMessagem('Houve erro na gravação'); > ... > edtNome.SetFocus; > End; > End > Else > Begin > ShowMessagem('É obrigatório informar o nome do cliente.'); > ... > edtNome.SetFocus; > End; > End; > > ================================================================= > > Na Classe: > > Type > > TCliente = Class(TObject) > > Private > > FCodigo : Integer; > FNome : String; > ... > > Public > > Property Codigo : Integer Read FCodigo; > Property Nome : String Read FNome Write FNome; > ... > > Function Salvar: Boolean; > ... > > End; > > Implementation > > Function TCliente.Salvar: Boolean; > Begin > > Result := dmCliente.Salvar(Self); > > End; > > End. > > ================================================================= > > No DataModule: > > Type > > TDmCliente = Class(TDataModule) > > Private > { Private declarations } > Public > { Public declarations } > Function Salvar(oCliente: TCliente): Boolean; > End; > > Var > dmCliente: TDmCliente; > > Implementation > > {$R *.dfm} > > Function TDmCliente.Salvar(oCliente: TCliente): Boolean; > Begin > With cdsCliente do > Begin > Try > Close; > If oCliente.Codigo = 0 Then > Begin > { Para abrir o ClientDataSet já vazio } > CommandText := 'Select * From Cliente Where CodCliente = 0'; > Open; > Insert; > FieldByName('CodCliente').AsInteger := {Seu Generator}; > End > Else > Begin > If Locate('CodCliente', oCliente.Codigo, []) Then > Edit; > End; > FieldByName('Nome').AsString := oCliente.Nome; > Post; > Result := ApplyUpdates(0); > Except > on E: Exception do > ShowMessage(E.Message); > End; > End; > End; > > ================================================================= > > Obs.: Não testei o código para saber se tem erros. > > Espero que dê para entender a utilização do MVC no Delphi. > > Sds, > > Romario > > > > > > Cristina escreveu: > > Então deixa ver se eu entendi. > > > > Para dar um insert, por exemplo em uma entidade cliente, eu terei > > que setar os valores dos atributos na entidade e depois na tabela > Clientes? > > > > Para fazer uma consulta, insiro na entidade clientes, todos os > > clientes cadastrados na tabela Cliente e trabalho com os dados em > > memória? E se eu tiver uma tabela de clientes muito grande, a > > performance do meu software não estará diminuída, por usar muito espaço > > em memória? > > > > > > _______________________________________________________ > Promoção Yahoo! Acesso Grátis: a cada hora navegada você acumula > cupons e concorre a mais de 500 prêmios! Participe! > http://yahoo.fbiz.com.br/ > > > -- > <<<<< 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] ou [EMAIL PROTECTED] > > > > *Yahoo! Grupos, um serviço oferecido por:* > > > ------------------------------------------------------------------------ > *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] > <mailto:[EMAIL PROTECTED]> > > * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do > Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>. > > -- Atenciosamente ---------------------------------------- Cristina Orthmann da Silva HACON Automação e Tecnologia Ltda Rua Lauro Linhares 589 - Bairro Trindade Florianópolis - SC - Brasil CEP 88036-001 Fone/Fax: 55 48 333-0699 Site: http://www.hacon.com.br/ Email: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> ---------------------------------------- -- <<<<< 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] ou [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