Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Question Documentación sobre BPL'S

Buenas Tardes.

Quisiera saber cómo y de que manera se trabaja con las BPL, pués he leido algunos conceptos referente a las ventajas que tiene este tipo de programación, y me gustaría aplicarlos a un nuevo proyecto que quiero empezar.

Indagando en la web he encontrado esta dirección http://www.clubdevelopers.com/index.php?p=54, pero como se pueden dar cuenta hay muchos conceptos que son nuevos para mi y no ha podido lograr responder mis dudas...

1. Cómo puedo compilar solo la "bpl" que requiero y no todo el proyecto
2. Al momento de realizar un ejecutable que archivos son los que se incluyen en el instalador

Si alguien conoce donde puedo encontrar más acerca de este tema o puede instruirme un poco más seria de mucha ayuda.
Responder Con Cita
  #2  
Antiguo 11-08-2008
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Saludos SubZero

Yo trabajo mis Projectos actualmente usando librerias BPl,, En forma general lo que debes hacer es tener un Projecto Principal, osea originalmente como tus los conoces y despues puedes crear tus PACKAGES con los formularios que vallas a utilizar, lo unico que deberias entonces al hacer tu instalador seria colocar el .EXE del principal mas los Archivos .BPL que hallas creados, Debes asegurarte que estos este en el mismo sitio de tu .EXE o en una carpeta que este en el PATH de la maquina.

Yo me ayude mucho con ese Link que muestras alli, esta basicamente lo que puedes hacer

Cualquiercos aestoy a la orden para ayudarte..
Responder Con Cita
  #3  
Antiguo 11-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Efren, muchas gracias, he intentado realizar el ejemplo pero me muestra cada vez que compilo un error aparece infromando:

"Cannot run project unless a host application is defined. Use the Run|Parameters...dialog box".

A que se debe esto?, es normal?
Responder Con Cita
  #4  
Antiguo 11-08-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
El enlace que utilizaste, es un traducción de este artículo. Ahí vienen los ejemplos que utilizó el autor y los puedes descargar.

Básicamente como ya te dijeron, debes de tener un proyecto ejecutable, un .Exe normal desde el cuál cargas los paquetes. Cuando tengas esto y quieras correr tu paquete directamente, tienes que usar las opciones del proyecto BPL y en la opción Run|Parameters... agregas tu aplicación .exe, esa es tu aplicación anfitrión (Host application).
__________________

Responder Con Cita
  #5  
Antiguo 12-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Gracias, esta info me es de gran utilidad..... por otro lado, es posible que el ejecutable en el cual tengo un menú o grupo de botones no se bloque de forma que aun teniendo una ventana abierta pueda abrir otras más no necesariamente la que tengo abierta? Gracias....
Responder Con Cita
  #6  
Antiguo 12-08-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
eso lo tienes que controlar desde tu ejecutable...

dependerá de que forma abras tus paquetes y de que forma sea el ejecutable.

Si el ejecutable es una forma contenedora (MDI) y los paquetes los cargas como hijos (MDIChild) podrías abrir cuantas ventanas quieras sin que te estorbe una con otra.
__________________

Responder Con Cita
  #7  
Antiguo 13-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Y..... una última pregunta, cada vez que haga algún cambio sobre un formulario es necesario compilar nuevamente todo el proyecto? Gracias...
Responder Con Cita
  #8  
Antiguo 13-08-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
no, si cambias algo en el paquete, solo es necesario compilar el paquete, al proyecto ejecutable no necesitas hacerle nada.

Recuerda que una de las ventajas de usar BPLs es que los puedes manejar como proyectos independientes, una cosa es el ejecutable y otra cosa es el paquete.
__________________

Responder Con Cita
  #9  
Antiguo 13-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
ok, muchas gracias, voy a revisar bien... para incluir este tipo de programación a mis proyectos. ContraVeneno, muchas gracias por tus consejos y paciencia.
Responder Con Cita
  #10  
Antiguo 15-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Buenas tardes....

No se si era conveniente abrir otro tema, sin embargo quise incluirlo en este para darle continuidad.

Efectivamente ya logre realizar una bpl hacer cambios en el diseño y mostrarlos, mi duda ahora es que anteriomente el modulo de datos y una unidad en la cual tengo todos los metodos, clases y funciones para acceso a la base de datos y controlar los componentes que se encuentran en el formulario, todos estaban dentro del mismo ejecutable y en las otras unidades hacia referencia a ellas en la clausula Uses, esto me permitia en el caso de hacer consultas llamar mi unidad ubicar una función, mandarle parámetros y el resultado mostrarlo en la pagina que invocaba el procesos, validar datos en un formulario etc, ahora nose como hacerlo con las bpl's, para que siga tomando estas unidades.

Nose si debo crear estas unidad de control por llamarla así y el modulo de datos en una bpl aparte que se cargue cada vez que la necesite desde una bpl hacer algo en la base de datos... ya que cuando se iniciaba la aplicacion y se presentaba la primera ventana allí ya se establecia la conexión con la base de datos y esta quedaba abierta para las transacciones....

Gracias!!!!!.
Responder Con Cita
  #11  
Antiguo 16-08-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
El acceso a datos (o tu módulo de datos) lo puedes crear en un BPL aparte. En el enlace donde se explica el uso de paquetes, vienen los ejemplos que utilizaron para explicarlos y el tercer ejemplo tiene precisamente eso: Un proyecto executable (Proyecto.exe) que carga paquetes, un paquete BPL (Programa.bpl) y el acceso a datos es otro BPL (llamemosle DataModule.BPL)

El paquete de acceso a datos (DataModule.bpl) deberá contener todo lo necesario para el acceso a tus datos, la opción "Build with runtime packages" deberá estar desactivada. Al construir ("Build") este paquete, el sistema te genera un archivo .DCP

El proyecto.exe deberá compilarse o construirse con los paquetes de tiempo de ejecución, es decir, vas a las opciones del proyecto, en "Packages" en la parte de abajo viene la opción "Build with runtime packages", que deberá estar activada, en esta lista, agregas el archivo .DCP de tu acceso a datos (DataModule.dcp)

Para que tu programa (Programa.bpl) tenga acceso a los mismos datos, la opción "Build with runtime packages" deberá estar desactivada y en la parte de requirimentos (Requires) deberás agregar el DCP del módulo de datos (datamodule.dcp)

Ahora, cuando creas tu proyecto ejecutable, deberás crear tambien tu acceso a datos y cuando creas o cargas tu programa.bpl, también tratas de crear el acceso a datos, pero como este ya se creó desde el ejecutable, tomará el mismo que ya está creado. Si el ejecutable no lo creo, entonces tu bpl será el que lo cree.

A grandes rasgos, eso tendrías que hacer, pero repito, revisa el ejemplo 3 (Example 3) de este enlace para que tengas una idea muy clara, de hecho, la gráfica que presentan ahí esta bastante descriptiva:
__________________

Responder Con Cita
  #12  
Antiguo 16-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Cuando hablas de Requires "Requerimientos", te refieres a algún tipo de configuración, a una instancia.... a algún modificador.

En los proyectos donde he trabajado con bases de datos por lo general el modulo de datos se carga antes que cualquier otra forma, incluso la forma principal, con las bpl, de que manera se puede hacer pués ya tengo creada la bpl y he vinculado la dcp en "Build with runtime packages", pero no he logrado hacerlo andar....

Última edición por subzero fecha: 16-08-2008 a las 13:23:56.
Responder Con Cita
  #13  
Antiguo 16-08-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Cita:
Empezado por subzero Ver Mensaje
Cuando hablas de Requires "Requerimientos", te refieres a algún tipo de configuración, a una instancia.... a algún modificador.
Si revisas bien el "Project Manager" de tu BPL, verás que de tu BPL se desprenden dos niveles (o dos ramas): "Contains" (Contiene) y "Requires" (Requiere). Le das click con el botón derecho del ratón sobre el "Requires" y le das en "Add reference..." (Agregar referencia) y agregas el DCP de tú BPL que contiene el módulo de datos principal.

¿ya viste el ejemplo tres?
__________________

Responder Con Cita
  #14  
Antiguo 16-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Gracias, efectivamente si lo he leido y es por ello que me surgen estas preguntas, ya que en el ejemplo 3 no me es muy claro de que manera se puede conectar la aplicación a la base de datos en tiempo de ejecución... voy analizar más detenidamente para ver si logor entender un poco más.... De igual forma estoy muy agradecido de la paciencia y la forma como me has ayudado a entender este tipo de estructuras, mil gracias
Responder Con Cita
  #15  
Antiguo 19-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Buenos días....

Nuevamente, con algunas dudas sobre este tema, he leido y en estos momentos tengo mi paquete de conexión, un paquete para manejo de controles (funciones, procedimientos), y la forma principal.

He tomado a mi forma principal en Project->Options->Packages, activo la opción "Build runtime packages", agrego mis dos paquetes DM (modulo de datos) y Logica (funciones y procedimientos), y en la clausula Uses agrego las unidades que dentro de estos paquetes se encuentran:

Uses UDM, ULogica;

Compilo y no me muestra error, la cuestión es cuando ejecuto el programa y me aparece un error al momento de realizar la conexión... Anteriomente al modulo de datos en Project->Options->Forms lo ubicaba en la parte superior para que fuera auto-creada primero que cualquier otra forma... creo que es por esto que me muestra error.

Gracias...
Responder Con Cita
  #16  
Antiguo 19-08-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Tienes que crear el módulo de datos. Esto es lo que viene en el ejemplo 3:

Vas a tener un proyecto ejecutable, un programa.bpl y un módulo de datos DM.dcp (DM principal)

En tu DM.dcp (DM Principal) estableces dos procedimientos, uno para crearlo y otro para liberarlo:
Código Delphi [-]
procedure CreateDataModuleMain;
procedure FreeDataModuleMain;

implementation

{$R *.DFM}

var
  DataModuleMainCount: Integer;

procedure CreateDataModuleMain;
begin
  if not Assigned(DataModuleMain) then
    DataModuleMain := TDataModuleMain.Create(Application);
  Inc(DataModuleMainCount);
end;

procedure FreeDataModuleMain;
begin
  Dec(DataModuleMainCount);
  if DataModuleMainCount <= 0 then
  begin
    FreeAndNil(DataModuleMain);
    DataModuleMainCount := 0;
  end;
end;
Esto es tu DM principal.

Ahora, toma en cuenta que tanto tu proyecto ejecutable como todos tus BPL, deben contener un módulo de datos particular, este DM particular se va a comunicar con el DM principal. También tienes que crearlo de la misma forma y añades la creación del DM Principal:
Código Delphi [-]
var
  DataModuleOrder: TDataModuleOrder;

procedure CreateDataModuleOrder;
procedure FreeDataModuleOrder;

implementation

uses
  custdata; // <--- este es el DM principal o el DCP agregado en el "Requires" de tu BPL

{$R *.DFM}

var
  DataModuleOrderCount: Integer;

procedure CreateDataModuleOrder;
begin
  if not Assigned(DataModuleOrder) then
    DataModuleOrder := TDataModuleOrder.Create(Application);
  Inc(DataModuleOrderCount);
end;

procedure FreeDataModuleOrder;
begin
  Dec(DataModuleOrderCount);
  if DataModuleOrderCount <= 0 then
  begin
    FreeAndNil(DataModuleOrder);
    DataModuleOrderCount := 0;
  end;
end;

procedure TDataModuleOrder.DataModuleCreate(Sender: TObject);
begin
  CreateDataModuleMain; //<- al crear el DM particular del BPL, se crea el DM principal
  QueryCustomer.Open;
end;

procedure TDataModuleOrder.DataModuleDestroy(Sender: TObject);
begin
  QueryCustomer.Close;
  FreeDataModuleMain; //<- al destruir el DM particular, se destruye el DM principal
end;

initialization
  DataModuleOrderCount := 0;
end.
Esto es el DM particular que utiliza el programa BPL

Cuando creas tu BPL, debes de crear el DM particular de ese BPL
Código Delphi [-]
procedure TFormOrder.FormCreate(Sender: TObject);
begin
  CreateDataModuleOrder;
end;

procedure TFormOrder.FormDestroy(Sender: TObject);
begin
  FreeDataModuleOrder;
end;
Recuerda que al crear el DM particular de tu BPL, se manda llamar el DM Principal.

De la misma forma, deberás crear un DM para tu proyecto ejecutable que a su vez cree el DM principal. Igual, de la misma forma.

Y la idea es: Se crea tu proyecto.exe, al crearse, este manda crear su DM particular y al crear el DM particular, manda crear el DM principal. Cuando desde tu proyecto.exe, cargas el programa.bpl, el programa.bpl manda crear su DM particular y este a su vez manda crear el DM principal, pero como el DM principal ya fue creado desde el proyecto.exe el DM particular del tu programa.bpl tomará esa conexión previamente creada.

Espero haberme explicado correctamente, de cualquier manera, todo eso viene en el ejemplo 3.
__________________


Última edición por ContraVeneno fecha: 19-08-2008 a las 14:46:50.
Responder Con Cita
  #17  
Antiguo 19-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
ContraVeneno, muchas gracias muy ilustrado tu ejemplo voy a analizarlo bien y a implementarlo a ver como me va, sin embargo en el ejemplo 3 que tu me dices solo veo una grafica y tres parrafos no se si a eso te refieres o algún ejemplo empaquetado para descargar.... Gracias
Responder Con Cita
  #18  
Antiguo 19-08-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Al final del artículo viene el enlace para descargar los ejemplos utilizados en el mismo. El archivo .ZIP que se descarga tiene tres ejemplos. Me refiero al tercer ejemplo de ese archivo:
Cita:
Empezado por Artículo en CodeGear
Download the example source code of this paper here.
__________________

Responder Con Cita
  #19  
Antiguo 20-08-2008
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Mi amigo, muchas gracias por tu paciencia....
Responder Con Cita
Respuesta



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
Documentacion o manual sobre ADO (ADonis y otros) JoAnCa Conexión con bases de datos 2 19-06-2008 19:21:14
Documentación sobre COM. alfredosg19 Varios 0 21-08-2006 23:04:10
Necesito documentacion detallada sobre ECO edalmasso Varios 2 12-01-2006 09:47:57
Documentación sobre hooks DarkByte API de Windows 5 23-10-2005 12:48:56
Documentacion sobre firebird en linux gescoto99 Linux 0 10-02-2005 06:04:05


La franja horaria es GMT +2. Ahora son las 19:46:10.


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