2011-05-24 12 views
5

Tengo un paquete de componentes personalizados que compila e instala las instalaciones sin problemas. Los archivos fuente para el paquete se encuentran en la ruta de mi biblioteca, al igual que la ubicación de los archivos bpl resultantes. Después de la instalación, el paquete y los componentes aparecen correctamente en la lista de paquetes de diseño. Sin embargo, no aparecen en la Paleta de herramientas.Delphi 2009: "Clase no encontrada" cuando se usa el paquete de componentes

Sin embargo, cada vez que abro un formulario que contiene uno de los componentes, aparece un error de clase no encontrada y el dfm no se abre. El proyecto compilará bien y puedo ver todos los archivos pas, pero el formulario no se mostrará en el diseñador.

¿Qué estoy haciendo mal aquí? ¿Cómo puedo hacer que los componentes se muestren correctamente en el diseñador de formularios?

Aquí está mi código de registro para los componentes:

RegisterComponents('QuoteSystem', [ 
    TFnpLabelNumericEdit, 
     TPBxCheckBox, 
     TPBxCheckBoxSub, 
     TPBxComboBoxSub, 
     TPBxListBoxSub, 
     TPBxRadioItemSub, 
     TFnpNumericEdit, 
     TQGlobals, 
     TPBItem, 
     TPBxCheckListBox, 
     TPBxCheckListBox, 
     TPBxComboBox, 
     TPBxDateEdit, 
     TPBxDescList, 
     TPBxEdit, 
     TpbxInteger, 
     TPBxLabel, 
     TPBxLabeledEdit, 
     TPBxLabelNumericEdit, 
     TPBxListBox, 
     TPBxMemo, 
     TPBxNumericEdit, 
     TPBxQuoteElement, 
     TPBxRadioGroup, 
     TPBxRadioItem, 
     TPBxRichEdit, 
     TPBxSpinEdit, 
     TpbxSummaryGlobals, 
     TAlignEdit 
]); 
+0

¿Tiene los archivos dcu en su ruta de búsqueda? –

+0

Están en la ruta de la biblioteca de Delphi ... – croceldon

+0

¿El programa se inicia correctamente después de la compilación? Revise el archivo .dfm en un editor de texto independiente para detectar cualquier anomalía. – jszpilewski

Respuesta

0

Usted tiene que registrar sus componentes como esto

RegisterComponents ('Custom', [TMyCustomComp1, TMyCustomComp2]); 

de lo contrario el IDE no será capaz de crear los componentes en el diseñador de formularios.

+0

Tengo el código de registro en mi paquete de tiempo de diseño – croceldon

1

El error típico de esto es escribir Register en la sección de interfaz o en la sección de implementación en minúsculas o en cualquier otro caso que no sea el correcto.

incorrecto:

procedure register; 

implementation 

procedure register; 

correcta:

procedure Register; 

implementation 

procedure Register; 
+0

Ese no es el caso aquí. Tengo el registro en mayúscula correctamente. – croceldon

+2

Sin embargo, es un buen consejo. Una vez me ha costado varias horas darme cuenta de eso. –

0

convencerse a sí mismo de haber añadido la unidad que contiene el código de registro a la sección contains en la fuente de archivo de paquete/proyecto.

+0

No estoy seguro de lo que quieres decir. Tengo un paquete de tiempo de ejecución: qteSys.bpl y un paquete de diseño: qteSysDesign.bpl. El código de registro está contenido en el paquete de diseño. – croceldon

+0

Bueno, típicamente el código de registro (es decir, el 'procedimiento Registro') está en una unidad separada. Uno fácilmente podría olvidarse de agregar esa unidad a la sección 'contains' del archivo fuente del proyecto' .DPK'. – NGLN

Cuestiones relacionadas