Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2011
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
Comunicacion entre BPL

Una pregunta Basica.

Estoy experimentando con los archivos BPL, cargandolos con LoadPackage.

Mi pregunta es si puede haber comunicacion entre el MainForm y el BplForm.

Ejemplo:

MainForm carga al BplForm, y luego el BplForm llama una funcion del MainForm.

MainForm carga al BplForm, y el MainForm modifica elementos del BplForm (Labels, Input, etc)

Gracias
Responder Con Cita
  #2  
Antiguo 09-02-2011
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
Creo que sólo tienes dos opciones o crear herencia de formularios de manera de que la clase del formulario sea común tanto a la aplicación como al bpl (no sé me ocurre claramente como) o que crees una función en tu bpl que tenga como parámetro un TForm y manejar los controles mediante FindComponent
__________________
self.free;
Responder Con Cita
  #3  
Antiguo 10-02-2011
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Puedes crear un BPL intermedio, para que te sirva de comunicación entre tu formulario principal y tu BPL cargado con LoadPackages, es decir, cargado de forma dinámica.

El punto clave es que tu BPL intermedio, deberá ser cargado de manera estática en tu formulario principal y en tu BPL lo debes de cargar utilizando el archivo DCP que se genera, igual de forma estática.

Con esto puedes tener acceso a este BPL desde tu formulario principal y hacerle cambios a las variables o a los objetos que contenga, estos cambios se verán reflejados desde tu BPL dinámico. De igual forma, si haces cambios al BPL intermedio desde tu BPL dinámico, estos cambios los podrás ver desde tu formulario principal.

Yo por ejemplo, estoy utilizando un DataModule en mi BPL intermedio...

MiPrograma.exe <----> DataModule.bpl <------> UnModulo.bpl
__________________

Responder Con Cita
  #4  
Antiguo 10-02-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si quieres ejemplos de lo que te han dicho en mi web hay varios ejemplos y código sobre el tema:

Acceder a las propiedades de un componente vía RTTI
Modificar propiedades de controles en ejecución utilizando RTTI

DLL’s, BPL’s, Carga dinámica/Estática y “Packages en Runtime”

Sistema de PlugIns en Delphi – Parte 1
Sistema de PlugIns en Delphi – Parte 2

Sistema de Plug-ins utilizando packages dinámicos
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 10-02-2011
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
Gracias Neftali.

Con esto pude solucionar el ejemplo 2

MainForm carga al BplForm, y el MainForm modifica elementos del BplForm (Labels, Input, etc)

Código Delphi [-]

procedure TFrm.FormCreate(Sender: TObject);
var
  PackageModule: HModule;
  AClass: TPersistentClass;
  componentLabel: TComponent ;
begin
  PackageModule := LoadPackage('Package1.bpl');
  if PackageModule <> 0 then
  begin
    AClass := GetClass('TForm2');

    if AClass <> nil then
      with TComponentClass(AClass).Create(Application)
        as TCustomForm do
      begin
        Show;

        // Buscar el Label
        componentLabel := FindComponent('label1');
        // lo ha encontrado?
        if Assigned(componentLabel) then begin
          TLabel(componentLabel).Caption := 'hola';
          MessageDlg('¿Ves el cambio?  Pulsa para continuar y cerrar...', mtConfirmation, [mbOK], 0);
          TLabel(componentLabel).Caption := 'Adiós';
          MessageDlg('Lo he vuelto a cambia......', mtConfirmation, [mbOK], 0);
          //Free;
        end;
      end;
  end;


end;

Ahora, me interesa lo que dice ContraVeneno.

¿ContraVeneno tienes algun ejemplo?

¿Tu dices que en vez que cargue el archivo Package1.dcp en vez del Package1.bpl?
Responder Con Cita
  #6  
Antiguo 10-02-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por adonias Ver Mensaje
Ahora, me interesa lo que dice ContraVeneno.
¿ContraVeneno tienes algun ejemplo?
¿Tu dices que en vez que cargue el archivo Package1.dcp en vez del Package1.bpl?
Pues en uno de los ejemplos que te he pasado, si no me equivoco tienes justamente ese ejemplo (aunque ampliado).



Tu PlugIn Base corresponde al package PlugBasic.bpl, que hace de "package intermedio"; Se carga de forma estática y el resto de packages que se cargan con LoadPackage (dinámicamente) derivan de el.

De esta forma cuando cargas el Plugin3 (que deriva de plugBasic) puedes acceder a él con los métodos genericos de PLugBase.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Comunicacion entre aplicaciones erickahr Varios 0 21-06-2010 18:56:48
comunicación entre dos aplicaciones? reinier Redes 1 08-05-2008 11:28:15
Comunicacion entre procesos walito Varios 0 14-11-2007 21:55:53
Comunicacion entre delphi y php vilamm PHP 3 15-12-2006 20:34:43
Comunicación entre PC por Lan c748a Varios 1 04-05-2004 08:51:21


La franja horaria es GMT +2. Ahora son las 17:42:07.


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