Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Fichas compartidas entre varias opciones (https://www.clubdelphi.com/foros/showthread.php?t=5551)

Marina 25-11-2003 15:01:24

Fichas compartidas entre varias opciones
 
Hola a todos!

Trabajo con Delphi 6, Interbase 6 e InterbaseExpress. Tengo el siguiente problema:

Tengo un Datamodule y 3 ventanas que son de uso común. En la definición de la clase del datamodule tengo miembros public que son variables de totales, que se van leyendo y actualizando desde las 3 ventanas mencionadas.
El problema es que desde varias opciones del sistema puedo usar este datamodule y las 3 ventanas. Estas varias opciones se pueden abrir simultáneamente en el mismo puesto de trabajo, por lo que necesito crear distintas instancias de las fichas de uso común, y además necesito pasar datos entre ellas (la referencia al Datamodule).

Datamodule: se crea desde la opción en cuestión, antes de crear las 3 ventanas. Inicializa sus miembros en 0 (cero)

Ventana 1: es llamada y creada desde la opción en cuestión, hace referencia a los miembros del datamodule

Ventana 2: es llamada y creada desde ventana 1, hace referencia y actualiza los miembros del datamodule

Ventana 3: es llamada y creada desde ventana 1, hace referencia y actualiza los miembros del datamodule

No se como hacer para pasar parámetros entre las ventanas. Estuve leyendo sobre los constructores y en el manual de Delphi 4 leí que se puede crear un contructor con nombre distinto a Create donde le puedo pasar la cantidad de parámetros que desee, pero no logré hacerlo funcionar. También leí sobre constructores y referencias a clases en el help de Delphi 6, pero tampoco logré que funcionara.

Si alguien puede ayudarme o darme alguna otra sugerencia de como hacer algo similar se le agradeceré mucho.

Saludos.

Marina

roman 25-11-2003 15:29:30

Usando constructores puedes hacerlo así:

Código:

TForm1 = class(TForm)
public
  constructor CreateEx(AOwner: TComponent; DataModule: TDataModule);
end;

constructor TForm1.CreateEx(AOwner: TComponent; DataModule: TDataModule);
begin
  Create(AOwner);

  { Código para usar la referencia al datamodule }
end;

Pero también puedes agregar una propiedad pública para pasar el datamodule:

Código:

TForm1 = class(TForm)
public
  DataModule: TDataModule;
end;

Cuando crees el formulario asignas la propiedad antes de abrirlo:

Código:

var
  Form: TForm1;

begin
  Form := TForm1.Create(..);
  Form.DataModule := DataModule;
  Form.ShowModal;
  Form.Free;
end;

// Saludos

Marina 25-11-2003 15:45:06

En caso de usar el Constructor como me indicás, como llamo la creación de la ventana, porque eso es lo que yo intenté hacer y no logré que funcionara

Marina

roman 25-11-2003 15:49:25

Cita:

Marina comentó:
En caso de usar el Constructor como me indicás, como llamo la creación de la ventana, porque eso es lo que yo intenté hacer y no logré que funcionara

Código:

var
  Form: TForm1;

begin
  Form := TForm1.CreateEx(.., DataModule);
end;

Los '..' son el "owner" que desees para el formulario: nil, self, application, etc. Si siempre va a ser nil (en caso de que tú misma te encargues de destruirlo) puedes omitir ese parámetro del constructor nuevo y en éste llamar al create original:

Create(nil);

// Saludos


La franja horaria es GMT +2. Ahora son las 11:05:30.

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