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 18-02-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Question Un Form para varios

Otra vez, Saludos Tod@s

En un casi Hipotetico

Tengo 4 form, 3 de ellos son transacciones relacionados con empleados y el otro Form es una pequeña consulta (ya que no soy un genio para saberme los codigos de cada empleado).

yo utilizo la consulta con los demas form.
La cuestion es la siguiente:
Necesito que al cerra el form de consulta, este transfiera el Codigo selecionadao de un empleado "X" al edit1 del formulario que lo llamo (form1,Form2 o form3).

Si pueden publicar algun ejemplo se los agradecia.

Gracias.

Última edición por vtdeleon fecha: 18-02-2005 a las 16:30:36.
Responder Con Cita
  #2  
Antiguo 18-02-2005
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:
Empezado por vtdeleon
Necesito que al cerra el form de consulta, este transfiera el Codigo selecionadao de un empleado "X" al edit1 del formulario que lo llamo (form1,Form2 o form3).
Mejor deja que el formulario que lo llamó tome el valor él mismo.

En tu formulario de consultas agrega una propiedad pública para el código del empleado:

Código Delphi [-]
type
  TFormaConsultas = class(TForm)
  private
    FCodigo: Integer;

  public
    property Codigo: Integer read FCodigo write Codigo;
  end;

En el evento OnCloseQuery de FormaConsultas asignas a FCodigo el valor que que corresponda al empleado seleccionado. Por ejemplo, si usas un Table para mostrar los empleados en FormaConsultas sería algo como:

Código Delphi [-]
procedure TFormaConsultas.FormCloseQuery(...);
begin
  if ModalResult = mrOk then
    FCodigo := TablaEmpleados.FieldByName('cod_empleado').AsInteger;
end;

Así, cuando el formulario de consultas se cierre, ya tendrás en Codigo el valor adecuado. De esta manera, desde cualquier formulario donde requieras seleccionar un empleado haces:

Código Delphi [-]
var
  FormaConsultas: TFormaConsultas;

begin
  FormaConsultas := TFormaConsultas.Create(nil);
  try
    if FormaConsultas.ShowModal = mrOk then
      Edit1.Text := FormaConsultas.Codigo;
  finally
    FormaConsultas.Free;
  end;
end;

Si observas, con esta metodología, el formulario de consultas podrás usarlo en cualquier parte sin que éste tenga que preocuparse por quién lo llama y por dónde hay que colocar el dato.

// Saludos
Responder Con Cita
  #3  
Antiguo 19-02-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Gracias Roman


Otra pregunta, puedo usarlo con formularios MDIChild?
Tengo una aplicacion en la que uso formularios MDIFORM y MDIChild.
Responder Con Cita
  #4  
Antiguo 20-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En este caso, todo cambia radicalmente:

un form Mdichild no lo puedes poner modal, así que creamos un evento, y al cerrar la ventana de consulta, miramos si alguien está esperando por ese evento.

Código Delphi [-]
type
  // defino mi evento personalizado
   type  TinformarA: procedure (const codigoSeleccionado:integer) of object;

  TFormaConsultas = class(TForm)
  private
    FInforma:TinformarA;
    FCodigo: Integer;

  public
    property Codigo: Integer read FCodigo write FCodigo;
    property InformarA:TinformarA read Finforma, write Finforma default nil;
  end;

En el Onclose de esta ventana:
if Assigned(Finforma) then Finforma(Codigo);

Form1, Form2 y Form3 harían lo siguiente:
Código Delphi [-]
  FormConsulta := TformaConsulta.Create(...);
  FormConsulta.InformarA := llamamePepe;

por supuesto, Form1, Form2 y Form3 deben tener un prodecimiento: LlamamePepe;
Código Delphi [-]
procedure Tform1.llamamePepe(const Codigo:integer);
begin
   showmessage(' El form de consulta se ha cerrado y ha seleccionado' +
 inttostr(codigo));
end;

Atención!!!: no se informa a las 3 ventanas, solo a la ultima que haya llamado a FrmConsulta.

Tambien se me ocurre que ese evento se lance cuando se cambia el codigo de cliente en el Formconsulta, esta rallada quedaría así:

Código Delphi [-]
// defino mi evento
type  TinformarA: procedure (const codigoSeleccionado:integer) of object;

type
  TFormaConsultas = class(TForm)
  private
    FInforma:TinformarA;
    FCodigo: Integer;
    procedure SetCodigo(Value:integer);
  public
    property Codigo: Integer read FCodigo write SetCodigo;
    property InformarA:TinformarA read Finforma, write Finforma default nil;
  end;

procedure TformaConsulta.SetCodigo(value:integer);
begin
  if Value <> Fcodigo then
  begin
     Fcodigo := Value;
     if assigned(Finforma) then Finforma(Fcodigo);
  end;
No sé si me he rallado un poco pero la cosa funciona

Saludos
Responder Con Cita
  #5  
Antiguo 21-02-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Gracias por sus ayudas


Lo probare...
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 23:20:13.


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