Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 22
jmariano Va por buen camino
Edito: (Edité porque te leí mal y la explicación que di carece, por tanto, de sentido)

Tienes razón (y me equivoqué yo, o más bien me lié con todo este tema de paquetes, je!) en que los paquetes cargados dinámicamente con "LoadPackage" no hay que especificarlos en la lista "Runtimes packages" (como es lógico, sólo es necesario especificar aquí los que queremos que cargue la aplicación de forma automática). (A parte, el significado que yo lo estaba dando a la palabra "estático" era a la "integración" dentro del ejecutable o .bpl).

De todas formas, si miráis el ejemplo que subí, sólo el paquete "BDPrueba.bpl" es cargado por la aplicación al inicio (ya que se usa un objeto en el principal), pero el formulario mostrado si es cargado dinámicamente a través de la función "LoadPackage". Mi intención con el ejemplo era mostrar una forma más sencilla de hacer uso de un objeto (implementado en otro paquete) que es utilizado tanto desde el mismo programa principal como desde los demás paquetes relacionados con el programa (los cuales si se cargarían dinámicamente con "LoadPackage"), ya que, por el uso que tiene, resulta innecesario complicarse con la carga manual del objeto.

Saludos!

Última edición por jmariano fecha: 25-08-2005 a las 16:21:14.
Responder Con Cita
  #2  
Antiguo 25-08-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Releyendo el mesaje original y para concretar ideas, lo que yo le recomendaría a adlfv es olvidarse de los paquetes dinámicos.

En la unidad UBD colocaría una función así:

Código Delphi [-]
unit UBD;

interface

function ObtenerBD: TBD;

implementation

var
  _BD: TBD;

function ObtenerBD: TBD;
begin
  if not Assigned(_BD) then _BD := TBD.Create;
  Result := _BD;
end;

initialization

  { nada aquí }

finalization
  _BD.Free;
end.

Es decir, en lugar de crear el objeto en la inicialización, se crea hasta la primera vez que se use.

Cualquier otro paquete que requiera de éste lo agregará (valga la redundancia) en su lista de paquetes requeridos.

La aplicación principal incluye UBD (cláusula uses) con lo cual puede usar libremente ObtenerBD (y por tanto _BD) sin necesidad de cargar explícitamente el paquete ni importar la función.

Y claro, usar la opción "Build with RunTime Packages" y agregar el paquete BD en la lista.

Con esto, la aplicación queda modularizada: se pueden hacer cambios a BD, recompilarlo y, sin necesidad de recompilar la aplicación, la nueva funcionalidad estará lista.

// Saludos
Responder Con Cita
  #3  
Antiguo 29-08-2005
adlfv adlfv is offline
Miembro
 
Registrado: may 2005
Posts: 39
Poder: 0
adlfv Va por buen camino
Gracias

Muchas gracias a los dos por responder.

Sus respuestas me han encaminado respecto a el tema de los paquetes para el caso de la BD, pero ahora tengo otra duda.

He estado viendo una web (bastante antigua) que habla de paquetes y conseguí algo que me pareció bastante interesante que plantea el siguiente código:

Código:
 var
   ThisInterface: TAddinModuleInterface;
 initialization
   ThisInterface := InitAddinModuleInterface(HInstance);
   with ThisInterface do
   begin
 	Caption := 'Module &1';
 	AddMaintenanceForm('&Customers', 'TfrmCustMaint');
 	AddMaintenanceForm('&Employees', 'TfrmEmpMaint');
 	AddEnquiryForm('&Sales Orders', 'TfrmOrderEnquiry');
 	AddReportForm('&Phone List', 'TfrmCustomerPhoneList');
 	MergeUserInterface;
   end;
La idea es meter los formularios independientes como formularios de mantenimientos, listados, reportes y cosas así en paquetes. Cada formulario puede tener su propio menú y se mezcla al cargarlo (como si fuese un plugin). Este código lo conseguí en: http://www.obsof.com/delphi_tips/DL613.html

La versión del ejemplo es antigua, utiliza D4 y QuickReports, mientras que yo no dispongo de QuickReports y utilizo D2005. Estoy intentando migrar dicho código, para obtener una funcionalidad similar pero desgraciadamente no comprendo aún bien el código. Por ejemplo, el autor de esto lo hace mediante el uso del registro, y no logro comprender el por qué lo hace así.

Si alguien conoce un código similar, o me puede orientar sobre cómo hacerlo le estaría muy agradecido. La idea es en cada paquete "registrar" el formulario en la seccion de inicialización y que salga automáticamente la opción para acceder a dicho formulario en el menú del programa.

Muchas gracias de antemano.

Ahh, se me olvidaba... Estoy intentando hacer la aplicación con arquitectura de plugins, osea que habran varios módulos que el usuario final podrá decidir si quiere o no. Para estos módulos sí debería hacerlo con paquetes dinámicos, no? Pues si no existen, el programa debe funcionar igual (sin fallos) pero sin la funcionalidad encapsulada en dicho paquete...

Muchas gracias de nuevo.

Un cordial saludo.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 22:29:08.


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
Copyright 1996-2007 Club Delphi