Estou criando dois data modules no Delphi 2007: TDMConexao e TDMBasico. O TDMConexao possui somente um componente TSQLConnection, com código no evento OnCreate pra conectar com a base de dados usando o nome de um arquivo que será informado numa propriedade Published do mesmo (TDMConexao). O TDMBasico contém somente um TClientDataSet. Este data module não tem propriedades Published. Pesquisando na web, encontrei códigos de como registrar as classes para que os data modules derivados exibissem as propriedades Published no Objetc Inspector. Sendo assim, criei um pacote e adicionei as units dos dois data modules (TDMConexao e TDMBasico), além de criar uma nova unit responsável por registrar as classes. Esta unit ficou assim:
unit FormPropReg; interface procedure Register; implementation uses DesignIntf, DMForm, DMConexao, DMBasico; procedure Register; begin // DataModules RegisterCustomModule(TDMConexao, TDataModuleCustomModule); RegisterCustomModule(TDMBasico, TDataModuleCustomModule); end; end. Após compilar e instalar o pacote, adicionei os dois data modules ao repositório de objetos, para poder usá-los em outros projetos, criando novos data modules (opção inherited). Mas (sempre tem um mas...), quando fui testar, pra minha surpresa, quando crio um data module em File->New->Other selecionando o TDMConexao ou o TDMBasico presentes no repositório, usando a opção inherited, os componentes presentes no data module ancestral não aparecem, ou seja, o novo data module fica vazio, sem componente algum. Entretanto, a propriedade Published do TDMConexao é exibida no Object Inspector. Caso eu use a opção copy ou use ao criar o data module, daí fica tudo normal, como deveria ser. Acredito que o procedimento que registra a classe dos data modules esteja incorreto, já estou há alguns dias pesquisando uma solução e não encontro. Agradeceria muitíssimo se alguém me desse uma dica de como resolver esse problema. Um grande abraço. Daniel Sonda