![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
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. |
|
#2
|
||||
|
||||
|
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í:
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 |
|
#3
|
|||
|
|||
|
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 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. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|