Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-11-2003
Marina Marina is offline
Miembro
 
Registrado: may 2003
Ubicación: Córdoba - Argentina
Posts: 52
Poder: 22
Marina Va por buen camino
Question 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
Responder Con Cita
  #2  
Antiguo 25-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 25-11-2003
Marina Marina is offline
Miembro
 
Registrado: may 2003
Ubicación: Córdoba - Argentina
Posts: 52
Poder: 22
Marina Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 25-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
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


La franja horaria es GMT +2. Ahora son las 15:28:45.


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