Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como Usar Custom Package? (https://www.clubdelphi.com/foros/showthread.php?t=89882)

pablopessoa 24-02-2016 02:29:32

Como Usar Custom Package?
 
Hola gente!
como podran ver en mi perfil, hace muuuucho tiempo que no programaba en Delphi. Decidi retomar la vieja costumbre e instale Embarcadero XE8 como para practicar realizar aplicaciones para tablets.
Antes de comenzar con eso, decidi practicar como modularizar una aplicacion, por ejemplo:

Supongamos que hago una aplicacion (VCL Form Application) que va a representar un menu principal de una biblioteca. Cada boton del menu, carga una accion, por ejemplo "Ver Libros" (un simple listado de libros).
Ahora supongamos que para modularizar, cada accion del menu, representa un Package.
Entonces si apreto el boton "Ver Libros", cargo en pantalla el packete que tiene toda la funcionalidad referente a esa accion.
Para esto, cree un VCL Form Application "Proyect1" con la siguiente interface:



y cree un package que solo contiene un grid:


Instale el Package en mi VCL Application y se instalo correctamente:


Ahora lo que quiero, es que mi Package (es decir, el grid) aparezca en el Panel que tiene la VCL App al apretar el boton "Ver Libros".
Pero por mas que pruebo codigos que encuentro en internet, no logro hacer que la grid del Package se cargue en el Panel blanco de mi VCL App.
Apelo a su ayuda, cualquier sugerencia sera muy agradecida.
Pido disculpas por lo largo del post pero intente ser lo mas claro posible en mi problema y contar que cosas habia intentado.

Saludos!

Neftali [Germán.Estévez] 25-02-2016 10:25:36

Cita:

Empezado por pablopessoa (Mensaje 502538)
Supongamos que hago una aplicacion (VCL Form Application) que va a representar un menu principal de una biblioteca. Cada boton del menu, carga una accion, por ejemplo "Ver Libros" (un simple listado de libros).
Ahora supongamos que para modularizar, cada accion del menu, representa un Package.
Entonces si apreto el boton "Ver Libros", cargo en pantalla el packete que tiene toda la funcionalidad referente a esa accion.
Para esto, cree un VCL Form Application "Proyect1" con la siguiente interface:

No es algo complicado, simplemente se trata de tener algunos conceptos claros.
Algunas cosas a comentar.

(1) Se puede trabajar con package y cargarlos de forma dinámica o estática.
Imagino que tu caso, que es el más sencillo y habitual, es el segundo (carga estática). Si quieres saber más sobre la diferencia entre ambos puedes revisar esta entrada en mi web donde se explica con ejemplos.

(2) Una vez compilado tu package con el formulario dentro, debes:
a) Añadir el DCP a las opciones del proyecto (es la parte que se usa en diseño).
b) Tener accesible el fichero BPL cuando ejecutes el proyecto (lo normal es tenerlo en el mismo directorio) porque es el que necesitas en ejecución.


Cita:

Empezado por pablopessoa (Mensaje 502538)
Instale el Package en mi VCL Application y se instalo correctamente:

No es necesario que instales el package creado. Es un package de ejecución. Si no tiene componentes que necesites ver en la paleta puedes trabajar con el sin instalarlo.
Fíjate que en las opicones de tu package puedes definirlo como de "runtime", de "designtime" o de ambos. en tu caso y con lo que incluye hasta ahora, basta con que sea de "runtime".




Cita:

Empezado por pablopessoa (Mensaje 502538)
Ahora lo que quiero, es que mi Package (es decir, el grid) aparezca en el Panel que tiene la VCL App al apretar el boton "Ver Libros".
Pero por mas que pruebo codigos que encuentro en internet, no logro hacer que la grid del Package se cargue en el Panel blanco de mi VCL App.

(3) Para esto, basta con que añadas el package (DCP) a las opciones del proyecto en la parte "Build with runtime packages"

(4) Luego puedes llamar al form del package de la forma estandard, con un código como este.

Código Delphi [-]
  // Crearlo
  FormPackage := TFormPackage.Create(Application);
  // definirlo sin borde
  FormPackage.BorderStyle := bsNone;
  // Ajustarlo al panel
  FormPackage.ParentWindow := Self.pnlDestino.Handle;
  // Que ocupe todo el espacio del panel
  FormPackage.Align := alClient;
  // Visualizarlo
  FormPackage.Show;

Añado al FTP un ejemplo con el proyecto y el package.

Una imagen:



pablopessoa 25-02-2016 20:47:42

Netfali , justamente todo el caso que arme para probarlo se baso en tu post en tu pagina :)

Tengo que serte sincero.. me quede absolutamente sorprendido con tu predisposicion en responder mi pregunta.
mi intencion era detallarlo con imagenes para que se vea que no pregunto sin antes haber antes probado nada por mi mismo, pero tu respuesta es totalmente fuera de serie.

ni bien llegue a mi casa voy a probar todo lo que me dijiste.
Hasta hiciste un GIF con un ejemplo basado en mi caso!! increible...
te agradezco MUCHISIMO tu buena voluntad y de verdad me pone feliz saber que existe gente con tantas ganas de ayudar a un desconocido.

te tengo al tanto en este post sobre cualquier novedad y nuevamente, mil gracias!

Saludos!!

Neftali [Germán.Estévez] 26-02-2016 07:22:22

Cita:

Empezado por pablopessoa (Mensaje 502679)
Netfali , justamente todo el caso que arme para probarlo se baso en tu post en tu pagina :)

Entonces tiene que funcionar seguro... ;);)

La verdad es que quería probar una cosa relacionado con el tema que estabas comentando así que en vez de hacer otro, hice el ejemplo que comentabas. Luego he continuado con él.

pablopessoa 26-02-2016 19:51:03

Me resulta muy util esta metodologia, por eso queria practicarla, en cuanto tenga el ejemplo bien avanzado trato de subirlo para otros que lo necesiten.
El problema es que esto lo hago por hobbie, entonces a veces el tiempo que puedo dedicarle es corto, sumado a que mi hijo tambien demanda tiempo.
entonces de este modo, uno puede "diagramar" un esquema de desarrollo en partes mas chicas, con menos demanda de tiempo y despues unirlo.
De paso queda modularizado, haciendo posible que aplicar correciones y updates al programa sea mas sencillo ya que el procesamiento de los modulos queda acotado a funciones simples.

Saludos!!!

pablopessoa 26-02-2016 20:28:05

Cita:

Empezado por Neftali (Mensaje 502629)

Perdoname que te moleste, pero cuando bajo el ZIP adentro solo hay una carpeta vacia :S

Neftali [Germán.Estévez] 28-02-2016 02:05:29

Tienes razón. :eek::eek::eek:
No se que ha pasado.
El Lunes lo busco y te lo vuelvo a subir.

Neftali [Germán.Estévez] 29-02-2016 10:53:41

Lo he vuelto a subir, esta vez completo.

Un saludo.

pablopessoa 29-02-2016 14:34:47

Ahora si puedo verlo completo.
Mil gracias!!!!


La franja horaria es GMT +2. Ahora son las 08:27:42.

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