schermata di inserimento dati aggiorna oggetti del modello in tempo reale, fornisce Annulla e Ripristina, aggiornamenti in tempo reale a un oggetto modello utilizzando modello di comando
-
26-09-2019 - |
Domanda
Lo schema dei comandi ben noto è usato spesso quando si desidera implementare un modello con funzionalità Undo / Redo. Sto cercando un'implementazione di riferimento (ad esempio) di una semplice forma di Delphi che implementa Undo / Redo.
Da quello che ho visto, semplice Delphi forme di immissione dati con tre scatole Modifica, sei scatole memo, e un paio di caselle combinate e altri semplici controlli di modifica, non tipicamente supporta Undo / Redo.
Qualcuno ha visto un approccio Delfi ben progettato per multi-livello di supporto undo / redo per un design model-view-controller complesso con una vista di Delphi separata (forma), e oggetti del modello (oggetti dati vengono aggiornati in modo sincrono con tutte le modifiche a la forma e la validazione e la logica di controllo non è incorporato nella forma, o nel modello, ma separati fuori.
Mi sembra che se non c'era bisogno di usare MVC, e si doveva semplicemente prototipo un Delphi demo app che aveva per modello o del controller oggetti, che Undo / Redo di un semplice puro Delphi "one-form- is-my-app" sarebbe più semplice da progettare, ma sarebbe ottenere più complicato di cui hai bisogno per registrare e riprodurre oggetti e sincronizzarli per Delphi azioni modulo come TEdit.OnChange.
Soluzione
Si dovrebbe usare seguiti modelli:
- Modello-GUI-mediatore
- synch tra oggetti modello e controllo GUI, in modo da non sono limitati da TDataset e controlli DB-aware. È possibile creare controlli degli oggetti-aware dai controlli OGNI VCL. - Comando
- le vostre azioni sul modello oggetti. Dovrebbe essere licenziato dal Controller. - Memento
- stato di risparmio interno oggetti di dati che per l'attuazione del comportamento Annulla / Ripristina
ASAP I'will inviare un semplice esempio sul mio blog www.danieleteti.it
Altri suggerimenti
sarei probabilmente base che su un ClientDataSet:. Che dispone di funzionalità Annulla (e se non ricordo male, è abbastanza facile da implementare rifare con esso pure)
Bonus:. È possibile utilizzare i dati di controllo consapevole
Ho la sensazione che siete alla ricerca di un qualche tipo di ORM come comportamento.
A DelphiLive Parlerò a fare una sorta di strato di ORM sulla base di ClientDataSets; essi sono piuttosto fresco.
- Jeroen