A tela de entrada de dados atualiza os objetos de modelo em tempo real, fornecem e refazer, atualizações ao vivo para um objeto modelo usando o padrão de comando

StackOverflow https://stackoverflow.com/questions/3425217

Pergunta

O bem conhecido padrão de comando é usado com frequência quando você deseja implementar um modelo com recursos de desfazer/refazer. Estou procurando uma implementação de referência (exemplo) de um formulário Delphi simples que implementa o desfazer/refazer.

Pelo que vi, simples formulários de entrada de dados Delphi com três caixas de edição, seis caixas de memorando e algumas caixas combinadas e outros controles de edição simples, normalmente não suportam desfazer/refazer.

Alguém já viu uma abordagem Delphi bem projetada para o suporte a desfazer/refazer em vários níveis para um design complexo do controlador de visualização modelo usando uma visualização Delphi separada (formulário) e objetos de modelo (os objetos de dados são atualizados de forma síncrona com todas as edições para o formulário, e a lógica de validação e controle não está incorporada no formulário ou no modelo, mas separada.

Parece-me que, se você não tivesse que usar o MVC, e precisava simplesmente prototipar um aplicativo de demonstração Delphi que não possuía objetos de modelo ou controlador, que desfazer/refazer de um puro delphi simples "um formulário é meu -App "seria mais simples de projetar, mas ficaria mais complicado, pois você precisa gravar e reproduzir objetos e sincronizá -los para formar ações como tedit.onchange.

Foi útil?

Solução

Você deve usar padrões de seguidores:

  • Modelo-gui-mediador
    -Sincronizar entre o modelo de objetos e o controle da GUI, para que você não esteja limitado pelos controles TDataset e DB-ADEE. Você pode criar controles de consciência de objetos a partir de todos os controles VCL.
  • Comando
    -Vocês ações no modelo de objetos. Deve ser demitido por controladores.
  • Lembrança
    -Economia o estado interno dos objetos de dados para implementar o comportamento de desfazer/refazer

O mais rápido possível postar um exemplo simples no meu blog www.danieleteti.it

Outras dicas

Eu provavelmente basearia isso em um clientDataSet: que possui recursos de desfazer (e, se bem me lembro, é muito fácil implementar o refazer também).

Bônus: você pode usar controles conscientes dos dados.

Tenho a sensação de que você está procurando algum tipo de comportamento do tipo ORM.
Na Delphilive, falarei sobre fazer uma espécie de camada ORM com base nos dados do cliente; Eles são bem legais.

--Jeroen

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top