PDA

Ver la Versión Completa : Delphi XE3: Instalar el mismo componente, desde varios Package, con NameSpaces


DagariK
11-04-2015, 01:32:41
Hola Amigos..

Estoy realizando la migración de nuestro sistema de Delphi 5 usando BDE a Delphi XE3 usando dbExpress, una de las tareas obligatorias ha sido trasladar nuestros componentes a la nueva versión de Delphi con todos los ajustes que ello requiera.

Pero dentro de las tareas que han surgido, nació la necesidad de montar nuestro antiguo ambiente de desarrollo BDE en el nuevo Delphi, tarea que se realizó, pero también tenemos los componentes ajustados para que trabajen con dbExpress.

De acuerdo a esto surge una necesidad, los componentes de la versión BDE están contenidos en un Package llamado PkgBDE.bpl, y los componentes migrados a dbExpress se llaman PkgdbEx.bpl (por decirlo de esa manera).

Los componentes de la primera bpl están en un NameSpace llamado PkgBDENS y los componentes de la nueva versión están el NameSpace PkgdbExNS.

Mi problema consiste en que NO puedo tener las dos bpl's instaladas en el mismo entorno (Delphi XE3) debido a que contienen componentes con el mismo nombre (desde luego con la funcionalidad requerida de acuerdo a lo que les comenté).

No sé de qué manera Delphi tiene por ejemplo instalados los componentes de FireMonkey y VCL estándar ya que por ejemplo el componente TButton existe en cada uno y no genera conflicto alguno, quizá sea algo en el proyecto (.dpk) que instala los componentes de Delphi, pero al no tener acceso a estos archivos, no puedo dar con la solución a mi problema..

Espero alguien pueda ayudarme para configurar los package y poder instalar mis componentes sin inconvenientes

Saludos y Gracias

Neftali [Germán.Estévez]
13-04-2015, 10:52:45
Lo que no estoy seguro es de si Delphi mantiene instalados los paquetes de FMX y VCL a la vez.
Es decir, al seleccionar el "tipo de aplicación" es posible que Delphi desinstale "los que no tocan". Lo digo porque en la paleta de componentes nunca los ves los dos a la vez.

Un vistazo rápido a Delphi XE5 muestra que hay 2 paquetes llamados dclfmxstd190.bpl y dclstd190.bpl, que tienen pinta de ser uno para VCL y otro para FMX.

DagariK
13-04-2015, 15:23:19
Lo que no estoy seguro es de si Delphi mantiene instalados los paquetes de FMX y VCL a la vez.
Es decir, al seleccionar el "tipo de aplicación" es posible que Delphi desinstale "los que no tocan". Lo digo porque en la paleta de componentes nunca los ves los dos a la vez.

Un vistazo rápido a Delphi XE5 muestra que hay 2 paquetes llamados dclfmxstd190.bpl y dclstd190.bpl, que tienen pinta de ser uno para VCL y otro para FMX.

Gracias @Neftali por tu respuesta, estuve haciendo una prueba respecto a lo que mencionas, inicie un nuevo proyecto FMX y revisé la pestaña de componentes y los mantiene unidos, desde luego, internamente sabrá que componentes filtrar para no usar los componentes de la VCL en la FMX.

Adjunto un pantallazo de la ventana de componentes instalados.

La verdad es que necesito hacer algo como lo que mencionas, dos bpl's totalmente diferentes, con componentes que tienen los mismos nombres.

Gracias de nuevo

Neftali [Germán.Estévez]
14-04-2015, 10:03:53
Vale.
Algo más de información...

"Tira del hilo" (como se suele decir) a partir del procedimiento GroupDescendentsWith. Parece que es lo que se usa para crear componentes con el mismo nombre para VCL y FMX. No se si es exactamente lo que tú necesitas, pues tu problemática no es la misma (no tienes dos plataformas distintas ni ascendientes diferentes -sigo pensando que el TButton de VCL y el TButton de FMX no pueden estar "activos" en un mismo proyecto-), pero es una opción.

A ver si por ahí llegas a algo.

Ya dirás...