Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-10-2012
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Como usar RegisterClass en Lazarus ?

Hola,

Como referencia, estoy usando el Lazarus 1.1 que viene con la última versión de Code Typhon.

He creado un paquete que, entre otras cosas, crea un descendiente de un módulo de datos especializado. La compilación del paquete no tuvo problemas. Bueno, reconstruír el IDE es superlento (mas de 20 minutos); pero, la compilación del paquete en sí es rápida. Eso sí, después de configurar las opciones de compilación porque con el default es una tortuga.

La razón de hacer eso es para migrar un aplicativo Delphi a Lazarus que usa ese tipo particular de módulo de datos.

Mi problema empieza cuando ya desde mi proyecto normal voy a abrir el formulario que usa la clase creada. El sistema muestra un error y me pregunta si suspendo la carga de la clase. Si le digo que sí, y después compilo, pasa bien la parte donde se referencia a la clase, por lo que pareciera que sintácticamente la reconoce.

El mensaje de error es :

Unable to find the component class "TMyClass". It is not registered via RegisterClass and no lfm was found

Ahora bien, lo que he investigado es que, al igual que en Delphi, Lazarus debe registrar automáticamente la mayoría de clases "persistentes"; pero, en algunos casos, hay que registrar explícitamente las que deban ser manejada directamente por el IDE de Lazarus, y esto debe hacerse vía RegisterClass.

En teoría sería solo registrar la clase al igual de como se hace con las que vienen con Lazarus; pero, ni la clase padre de la mía, ni otros descendientes de ella que forman parte de las clases que vienen con Lazarus, aparecen registradas en el código fuente de los paquetes Lazarus. O sea, no encontré ninguna lllamada a RegisterClass que usara como parámetro la clase respectiva (incluso hice la busqueda desde el propio directorio C:\codetyphon). Sin embargo, si uso directamente las clases que vienen con Lazarus el asunto si funciona.

Haciendo analogía con Delphi, donde RegisterClass se usa generalmente en el procedure Register junto con RegisterComponents, probé a usar RegisterClass en el procedure Register de la unidad que implementa a esa clase; pero nada.

El procedure Register se usa normalmente para registrar clases creadas en una unidad que interactuan con el IDE; típicamente usando RegisterClass, y RegisterComponents si la clase debe agregarse a la paleta de componentes.

El procedure Register Se debe declarar en la sección de interface e implementarse con algo como :

Código Delphi [-]
Procedure Register;
Begin
       RegisterComponents('Mi paleta', [TMiClase01]);
       RegisterComponents('Mi paleta', [TMiClase02]);
       ......
       ...
       RegisterClass(TMiClase01);
       RegisterClass(TMiClase02);
End;

Igualmente probé a usar RegisterClass en la sección de INITIALIZATION de la unidad de mi proyecto que no carga bien; pero, tampoco funcionó.

Mañana pienso probar poniendo el RegisterClass en el constructor de la clase. Normalmente espero a que se me agoten las ideas antes de hacer preguntas; pero, considerando lo que demora reconstruir el IDE, creo que es mejor documentar ya este caso.

Alguién puede explicar como debe hacerse ese registro de la clase ?.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como usar SQLite con Lazarus¿ mcs Lazarus, FreePascal, Kylix, etc. 6 12-03-2014 00:04:57
Usar componentes de Lazarus en Delphi buenarquero Varios 12 22-11-2011 17:52:02
Que versión de Lazarus usar? mcs Lazarus, FreePascal, Kylix, etc. 27 13-12-2010 19:29:47
ayuda para usar lazarus Robert01 Linux 9 21-08-2006 11:09:35
RegisterClass MARIOR Varios 1 06-01-2004 11:53:30


La franja horaria es GMT +2. Ahora son las 22:23:16.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi