Ver Mensaje Individual
  #1  
Antiguo 03-02-2012
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Reputación: 18
mjjj Va por buen camino
Formulario creado desde libreria y traspaso de informacion

Voy a tratar de explicar mi problema de la mejor forma posible.

Tengo una aplicación desarrollada en Delphi 2010, ésta utiliza varias librerías (bpl) creadas por mi. Esta librerias contienen formularios entre otras cosas.

La carga de estos formularios (contenidas en librerias bpl) lo hago con el siguiente codigo:

Código Delphi [-]
  private
    AClass:  TPersistentClass;
    DynForm: TForm;
.
.
.
 
procedure...
var
  PackageModule: HModule;
  noc: integer;
begin

PackageModule := LoadPackage('compras.bpl');
  if PackageModule <> 0 then
  begin
    AClass := GetClass('Tnueva_ocform');
    if AClass <> nil then
    DynForm := TComponentClass(AClass).Create(self) as TForm;
    dybForm.Caption := 'Nueva Orden Propia '+inttostr(noc);

    DynForm.Show;

Con esto logro crear tantos formularios distintos como quiera.
Ahora bien para mandar agunos parametros al nuevo formulario creado utilizo lo siguiente:

Código Delphi [-]
type
  TExecuteProcWrite = procedure(noc:integer; empresa: string) of object;
.
.
.
 
  public // sentencias publicas
    procedure datos_generales(noc:integer; empresa: string);
.
.
.
 
procedure Tmainform.datos_generales(noc:integer; empresa: string); // detalle del procedimiento
var
  Routine: TMethod;
begin
  // Acceder al método
  Routine.Data := Pointer((DynForm as AClass));
  // Ejecutar al código
  Routine.Code := (DynForm as AClass).MethodAddress('datos_generales');
  // No ha encontrado el código de la rutina...
  if (Routine.Code <> nil) then begin
    // Ejecutarlo
    TExecuteProcWrite(Routine)(noc, empresa);
  end;
 
Procedure.button.click // llamada del procedimiento
begin
 datos_generales(1, 'empresa');
end;

Todo lo anterior en el formulario principal de la aplicación.
En el formulario creado tengo las rutinas de recepción como sigue:

Código Delphi [-]
  published
    procedure datos_generales(noc:integer; EMPRESA: STRING);
.
.
.
 
procedure Tnueva_ocform.datos_generales(noc: integer; EMPRESA: STRING); // procesamiento de datos
begin
edit1.text := inttostr(noc);
EDIT9.Text := EMPRESA;
end;

Bueno amigos, hasta aquí todo esto funciona perfecto. Además espero se haya entendido.
Ahora expongo mi problema, como bien explique en principio del mensaje, puedo crear tanto formularios como quiera, el problema es que la ejecutar el procedimiento para mandar datos desde el formulario principal al creado, solamente se ven reflejados estos datos en el último formulario creado.

Espero se haya entendido, y ojala me pueda ayudar a resolver esto.

Muchas gracias
Responder Con Cita