Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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 09-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: 19.449
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
Creo que lo correcto es que le pases a la DLL los valores y en todo caso que desde la DLL se asignen los valore a los componentes.

De todas maneras no accedes a la DLL como variable, sino que dentro tendrás un Form (me imagino) con componentes dentro, así que en cualquier caso seguirás accediendo al form.
__________________
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
  #2  
Antiguo 09-02-2011
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
Estube buscando en el foro, y lei que hay componentes BPL.

Una vez que los cargo con LoadPackage, puedo llamar alguno de los componentes?
Responder Con Cita
  #3  
Antiguo 09-02-2011
Avatar de adonias
adonias adonias is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
adonias Va por buen camino
Ok.

Hasta aqui voy bien.

Cargo el paquete en el form1
Código Delphi [-]
procedure TFrm.FormCreate(Sender: TObject);
var
  PackageModule: HModule;
  AClass: TPersistentClass;
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
        ShowModal;
        labelForm2.Caption := 'hola';   <---- No llego al form2
        Free;
      end;

    UnloadPackage(PackageModule);
  end;

end;

El problema es cuando intento llegar al label del form2
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: 19.449
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
Lo primero que veo es que si utilizas ShowModal, no accederás a la línea que comentas hasta que no cierres el formulario,por lo tanto en este caso debería utilizar Show.

Por otro lado, como estás accediendo al formulario de forma genérica, para acceder al label puedes utilizar FindComponent, por ejemplo.

Cambia el código por este:

Código Delphi [-]
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;

Además en el package debes registrar la clase del formulario para poder encontrarla posteriormente con GetClass.

Al final de la Unit del Form2 coloca este código:


Código Delphi [-]
initialization
  RegisterClass(TForm2);

finalization
  UnregisterClass(TForm2);

Por último asegurate de que estás compilando el proyecto con la opción "Build with runtime Packages".

Descarga este ejemplo y revisa el código, creo que te puede ser de utiidad (Sistema de plug-ins utilizando packages dinámicos).

Un saludo.
__________________
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
Tu lo haces ver tan facil neftalí!!!


Funciono perfecto...

Muchisimas gracias Master!

Última edición por adonias fecha: 10-02-2011 a las 13:46:46.
Responder Con Cita
  #6  
Antiguo 10-02-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 20
rgstuamigo Va por buen camino
Arrow

Bueno ..nada más agregar otra alternativa..(aunque no la he probado)... es decir que para poder obtener el label se podría hacer un casting del formulario directamente a clase del formulario en cuestion;ésto en la siguiente linea:
Código Delphi [-]
...
 with TComponentClass(AClass).Create(Application)
        as TCustomForm do //<-- aquí en ves de hacer casting hacia TCustomForm deberiamos hacerlo directamente hacia la 
               //Clase descendiente que nos interesa, es decir hacia nuestro formulario  
      begin
        ShowModal;
        labelForm2.Caption := 'hola';   <---- No llego al form2
        Free;
      end;
...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 10-02-2011 a las 15:40:41.
Responder Con Cita
  #7  
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: 19.449
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 rgstuamigo Ver Mensaje
... es decir que para poder obtener el label se podría hacer un casting del formulario directamente a clase del formulario en cuestion
El problema es que si pusieras ahí la clase del formulario en cuestión (TForm2, por ejemplo, en lugar de TCustomForm) eso te obligaría (el compilador en realidad) a añadir la unit donde se encuentra definido TForm2, al USES.
__________________
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


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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como cargar componentes activeX y librerias en el ejecutable tom_rkx C++ Builder 3 09-04-2008 22:38:57
Librerias Bonachon Conexión con bases de datos 2 18-01-2007 01:54:46
librerias javikanin Varios 0 09-11-2004 22:11:20
librerias kwan Conexión con bases de datos 7 16-09-2003 23:53:21
Librerias esquerda21 Gráficos 6 08-08-2003 09:47:08


La franja horaria es GMT +2. Ahora son las 17:20:18.


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