Pergunta

Eu tenho vindo a desenvolver uma série de componentes usando TFrames e ModelMaker - Eu encontrei a combinação de design / desenvolvimento visual + herança + ModelMaker ser muito convincente. Eu, então, registrar esses descendentes TFrame w / a unidade de registo, e eles se tornam full-fledges componentes baseados em paleta de lá. Estou usando o Delphi 2007.

No início de minha aprendizagem sobre os pequenos "senões" deste processo, descobri que uma série de problemas que eu iria correr para com os descendentes TFrame streaming de forma incorrecta (muitas vezes aparecendo como formas no IDE, ao invés de quadros) poderia ser completamente eliminado através da introdução de minha própria "TBaseFrame" classe que herda de TFrame sem chanegs, e, em seguida, usar isso como a classe base para desenvolver componentes de (a adição de métodos, propriedades, etc). Se eu adicionei propriedades e métodos, etc, para uma classe / frame herdar diretamente de TFrame, o arquivo DFM de streaming iria ficar muitas vezes confundidas.

Assim, no geral, trabalhou grande, uma vez que eu tenho as dobras funcionou.

Ontem, porém, eu corri para um novo problema:

Eu instalar os componentes resultantes em conjuntos de pacotes, agrupados em maneiras que fazem sentido (ou seja, todos os "painéis" para App 1 estão em um pacote, um número de "espectadores" para App 2 estão em outro, etc).

Se a classe TBaseFrame não está incluído no pacote, o componente TFrame-descendente herdar não será carregado no IDE. MAS, se eu adicionar TBaseFrame ao pacote, eu me deparo com o conflito Delphi informa quando ele tem o mesmo arquivo de origem PAS em mais de um pacote.

I poderia colocar todos os meus frame = componentes baseados em um pacote gigante, mas eu realmente, realmente preferem não, como eu posso ver claramente que vai ficar muito grande / fora de mão ao longo do tempo, dada a natureza de quantos conjuntos Estou pensando em desenvolvimento. Existe alguma outra maneira de resolver esse conflito?


Update - há um truque para obter isso funcione "adequadamente." - certifique-se de ler os comentários abaixo

Foi útil?

Solução

Você já tentou colocar o seu TBaseFrame em um pacote separado que seria "necessária" por todos os outros pacotes?

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