Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   MISION IMPOSIBLE: Los componentes (https://www.clubdelphi.com/foros/showthread.php?t=70097)

ElDuc 29-09-2010 21:15:27

MISION IMPOSIBLE: Los componentes
 
Hola jovenes,

Sigo luchando contra los componentes y siguen siendo inexpugnables para mi.

Antes trabajaba con D7 y ahora trabajo con D2010, ¡creo que aún es peor!

La cuestión es que he creado un componente descendiente de TImage y que utiliza otras tantas clases que tambien he creado.

El Componente se instala correctamente en la paleta, pero cuando lo quiero utilizar en un proyecto, me dice que no encuentra las unidades.dcu y me obliga a adicionar todas las unidades.pas al proyecto, después de esto corre perfectamente.

Esto no sucede con los componentes de Delphi u otros fabricantes.

Os explico lo que hago:

Tengo una unidad.pas "_TMayComponent", en ella existe la clase TMyImage que desciende de TImage.

Esta clase utiliza otra/s clase/s, cada una de estas otras clases está definida en otra unidad y también utiliza otra/s clase/s:

TMyClass_1, que desciende de TPersistent, en la unidad "_TMyClass_1.pas"

TMyClass_2, que desciende de TPersistent, en la unidad "_TMyClass_2.pas"

TMyClass_3, que desciende de TPersistent, en la unidad "_TMyClass_3.pas"

... ...

TODAS ESTAS UNIDADES SE ENCUENTRAN EN EL DIRECTORIO ...\MyComponentes\Units

Todos las unidades están incluidas en un paquete "MyComponents.dpk" que lo guardo en carpeta ...\MyComponentes.

Es decir, el directorio en el que se haya el paquete tiene otro directorio con ltodas las unidades que lo componen.

La intención es que en el paquete haya más de un componente y guardar las unidades de cada componente en carpetas separadas, pero el primer componente ya no me funciona bien.

¿Qué esoy haciendo mal?

rgstuamigo 29-09-2010 21:48:24

Bueno creo que te has olvidado de agregar los "library Path" ya sea de los .DCU o .PAS para que delphi pueda compilar cuanquier proyecto que utiliza tu "nuevo componente", desde luedo se lo puede hacer para cada proyecto lo cual es engorroso, por eso es mejor hacerlo una sola ves agregandolo al IDE.;)
Para agregarlo y hacer que Delphi pueda compilar cualquier aplicacion que utilice nuestro componente lo que hace en Delphi 7 es ir al menú : Tools>Environment Options...> Ir a la Pestaña de Nombre "Library"> ya en ella presionar el primer botoncito de la Opcion "Library Path", nos saldrá otra ventanita encima llamada "Directories", en ella presionar el botoncito con 3 puntitos, lo cual abrirá una nueva ventana donde podemos buscar el directorio(carpeta) donde estan los archivos fuentes de nuestro componentes, ya sea los .pas o los .dcu;seleccionamos la carpeta y le damos aceptar, luego para agregarlo pulsamos el boton "Add" y finalmente el boton "Ok" de la ventana "Directories".De igual forma presionamos el Boton "Ok" de la primer ventana llamada "Environment Options". Y eso es todo.
Si se dá el caso de que los archivos fuentes(.pas,.dcu) estuvieran en diferentes directorios, pues abrá que agregarlo a cada uno, en ese caso.;).
Espero sirva de ayuda...:)
Saludos...:)

cloayza 29-09-2010 22:11:19

Como dice el chavo del 8....eso, eso, eso...:D:D

Saludos

Neftali [Germán.Estévez] 30-09-2010 10:17:29

Cita:

Empezado por ElDuc (Mensaje 377908)
Hola jovenes

Gracias. :):):);)


Cita:

Empezado por ElDuc (Mensaje 377908)
La cuestión es que he creado un componente descendiente de TImage y que utiliza otras tantas clases que tambien he creado.
El Componente se instala correctamente en la paleta, pero cuando lo quiero utilizar en un proyecto, me dice que no encuentra las unidades.dcu y me obliga a adicionar todas las unidades.pas al proyecto, después de esto corre perfectamente.

Normalmente es porque el programa no encuentra la información que le hace falta del componente. O los fuentes y las DCU's del componente (que deberías añadir al path), o si deseas trabajar con los compilados, deben estar accesibles los ficheros BPL y DCP que corresponden al package que has generado. Lo lógico es que el BPL esté dentro del Path, para no tener problemas y el DCP añadido a las opciones del proyecto.

ElDuc 09-10-2010 12:00:05

Muchas gracias a todos,

Ya lo he solucionado siguiendo vuestros consejos.

En cuanto a lo de la bpl, delphi la coloca en un directorio no deseado, para hacer lo que dices y colocarla en mi directorio, ¿puedo configurar algo para que se haga automáticamnte?

Estoy intentando hacer un componente a traves de una Interface y no me deja, ¿Sabéis si se puede hacer?

En este caso sería muy conveniente para mi, porque me permitiría que en el inspector de objetos sólo salieran las propiedades que yo deseo.

Saludos.

rgstuamigo 09-10-2010 15:14:37

Para responder a todas tus preguntas e inquietudes lo mejor que te puedo decir es mejor leas un manual y/o tutorial de creacion de componentes, sino me equivoco en nuestro FTP tenemos un PDF muy ilustrativo donde se enseña como crear componentes y toda la lógica que se debe seguir.;) Dicho manual se encuentra aquí, es el archivo de nombre "Manual_Crear_componentes_Delphi.zip", te recomiendo leerlo sin flojear.;):D.
Tambien aqúi hay otro manualcito que podes leer tambien.;)
Saludos...:)

ElDuc 11-10-2010 20:16:55

Muchas gracias,

Sigo luchando.


La franja horaria es GMT +2. Ahora son las 15:46:30.

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