Penso che tdatamodule sia un concetto ben definito, ovvero una unit nella quale convenzionalmente si posizionano i componenti per accesso ai dati che saranno condivisi globalmente da tutta l'applicazione.
Tipicamente sono tconnection (cambiano a seconda del database e della libreria che usi), tquery, ttable e tdatasource (ovviamente con relativi "cugini" per le varie librerie).
Questo però non ti costringe, affatto, a mantenere solo e solo lì i componenti quali ad esempio le tquery.
Se, ad esempio, esiste una tabella "archiviosms" che viene utilizzata solo in una form (ad esempio che invia gli sms), allora piazzare una qryArchivioSMS nel tdatamodule, e magari pure una dsrArchivioSMS (un tdatasource con dataset che punt a qryArchivioSMS) (cosa che va benissimo) ha pregi e difetti.
Il pregio è quello di avere sott'occhio tutte le sorgenti-dati (questo è buono ad esempio per centralizzare gli eventi AfterEdit, AfterPost etc come fossero "trigger).
Il difetto (a seconda della dimensione del progetto e del riutilizzo del codice, se lo fai) è che da un lato nel tdatamodule puoi trovarti con 800 componenti, il che non è il massimo della vita quando lo apri a video e devi cercare la qryArchivioSMS tra altre 400 query diverse) MA, soprattutto, se vuoi trasmigrare la form "inviosms" tra due progetti.
Se i suoi componenti di accesso ai dati sono nel tdatamodule del progetto #1, dovrai fare il copia-incolla di questi nel tdatamodule del progetto #2 (cosa per nulla scontata, ci vuol poco a dimenticarsene uno, e questo diventerà "vuoto", ovvero potresti non accorgertene se non a runtime, due @@)
Se invece la form è indipendente (come fosse una classe vera e propria per capirci) ti bastera copiare i file nel progetto #2 ed aggiungere il relativo PAS.
Voilà il progetto #2 può inviare gli sms
ATTENZIONE al collegamento "fantasma" per la connessione la quale, ovviamente, deve esistere nel progetto #2 con lo stesso nome e nella stessa posizione (il tdatamodule).
Se rendi modulare il progetto ci può volere poco più di un minuto per dare capacità al progetto #2 per attività standard, tipo documenti, prima nota, documentale, email etc.
Spero di essere stato chiaro

Rispondi quotando