Domanda

Ho sviluppato una serie di componenti usando TFrames e ModelMaker: ho trovato la combinazione di progettazione / sviluppo visivo + eredità + ModelMaker molto convincente. Quindi registro questi discendenti di TFrame con un'unità di registrazione e da lì diventano componenti basati sulla tavolozza a pieno titolo. Sto usando Delphi 2007.

All'inizio della mia conoscenza del piccolo "strappo" di questo processo, ho scoperto che un certo numero di problemi che avrei incontrato con i discendenti di TFrame in streaming in modo errato (spesso visualizzati come moduli nell'IDE, anziché in frame) potrebbero essere completamente eliminati introducendo il mio "TBaseFrame" classe che eredita da TFrame senza modifiche e quindi utilizza CHE come classe di base per sviluppare componenti da (aggiunta di metodi, proprietà, ecc.). Se aggiungessi proprietà e metodi, ecc. A una classe / frame che eredita direttamente da TFrame, lo streaming di file dfm verrebbe spesso confuso.

Quindi, nel complesso, ha funzionato benissimo, una volta risolto il problema.

Ieri, tuttavia, ho riscontrato un nuovo problema:

Installo i componenti risultanti in set di pacchetti, raggruppati in modo sensato (ovvero tutti i "pannelli" per l'App 1 sono in un pacchetto, un numero di "visualizzatori" per l'App 2 sono in un altro, ecc. ).

Se la classe TBaseFrame non è inclusa nel pacchetto, il componente discendente TFrame non verrà caricato nell'IDE. MA, se aggiungo TBaseFrame al pacchetto, mi imbatto nel conflitto segnalato da Delphi quando ha lo stesso file PAS di origine in più di un pacchetto.

Io potrei mettere TUTTI i miei componenti basati su frame = in un unico pacchetto gigante, ma preferirei davvero, come posso vedere chiaramente che diventerà troppo grande / fuori controllo nel tempo, data la natura di quanti set ho intenzione di sviluppare. C'è un altro modo per risolvere questo conflitto?


Aggiornamento: esiste un trucco per far funzionare questo "correttamente" - assicurati di leggere i commenti qui sotto.

È stato utile?

Soluzione

Hai provato a mettere il tuo TBaseFrame in un pacchetto separato che sarebbe " richiesto " da tutti gli altri pacchetti?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top