per l'IDE di essere in grado di trovare un datamodule (per le proprietà non previa programmazione) in fase di progettazione, le seguenti condizioni devono essere vere:
- Il DataModule deve essere aperta/creato almeno una volta durante la sessione di l'IDE (può essere chiuso in seguito durante la sessione), vedere (*), e
- L'unità DataModule deve essere presente nella clausola uses dell'unità Form.
per l'IDE di essere in grado di trovare di nuovo un datamodule (per le proprietà già impostate) in fase di progettazione, le seguenti condizioni devono essere vere:
- Il DataModule deve essere aperta/creato almeno una volta durante il sessione del IDE (esso può essere richiusa dopo durante la sessione), o
- l'unità DataModule deve essere presente nella clausola usi dell'unità modulo, o
- il DataModule ONU deve essere aggiunto al file di progetto.
Per il programma riuscire a trovare un DataModule (per le proprietà già impostate) a runtime:
- Il DataModule deve essere creato, o
- L'unità DataModule deve essere presente nel usa la clausola dell'unità Modulo.
Per il programma riuscire a trovare un DataModule (oggetti non impostato) in fase di esecuzione:
- L'unità DataModule deve essere presente nella clausola usi dell'unità modulo.
Quindi, in teoria, se sono soddisfatte tutte le giuste condizioni, l'unità DataModule potrebbe essere omessa dalla clausola uses del Form. Ma per essere sicuro del collegamento di runtime, concluderei che non c'è alcuna via d'uscita sicura o almeno non conveniente dall'aggiungere l'unità DataModule alla clausola usi dell'unità Form.
(*) In progetti di grandi dimensioni con molte forme e DataModules, è molto comune per non aprire ogni DataModule nell'IDE, e le impostazioni facilmente può perdere. La dipendenza dal vincolo del design in base al nome DataModule può comportare che i tuoi moduli non mostrino mai dati (o immagini in questo caso). Questo è un bug che è difficile prevedere senza verificare le impostazioni di DataModule di ogni modulo.
Una soluzione è quella di impostare manualmente tutte le proprietà che fanno riferimento ai componenti di un DataModule in fase di esecuzione, preferibilmente in un costruttore sovrascritto o in un gestore di eventi OnCreate. Ciò impedisce anche problemi di denominazione duplicati con più istanze DataModule, come le offerte con this question.
Si consiglia di spostare tali unità nella clausola Implementazione usi. questo protegge il DFM e tuttavia rende l'interfaccia utilizza la clausola più pulita. –