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 10-02-2005
castroruiz2001 castroruiz2001 is offline
Miembro
 
Registrado: may 2003
Ubicación: Mexico
Posts: 15
Poder: 0
castroruiz2001 Va por buen camino
Question saber el form

Que tal foro...


Tengo algunas tablas que son facturas, Ordenes y Clientes... tengo los dos fromularios para facturas y Ordenes, ademas de un formulario para la consulta de los Clientes.

Mi duda es como saber cual de los 2 formularios (Facturas, Ordenes) hizo la llamda al formulario de consulta para signar el registro buscado a uno de los dos formularios.

Gracias.
__________________
Cesar Ruiz
Responder Con Cita
  #2  
Antiguo 11-02-2005
Avatar de ISKANDAR
ISKANDAR ISKANDAR is offline
Miembro
 
Registrado: jun 2004
Ubicación: Argentina, Latitud 28- Longitud 59 (Resistencia)
Posts: 41
Poder: 0
ISKANDAR Va por buen camino
Hola, lo que podrías hacer es declarar en el formulario de clientes alguna propiedad que sirva como flag, entonces antes de llamarlo, el formulario que lo invoque podría escribir su nombre en dicha propiedad, de este modo "Clientes" sólo debe revisar esa propiedad para saber que hacer. Saludos.
__________________
El que nada duda, nada sabe.
Guía de Estilo
La Otra Guía de Estilo
Responder Con Cita
  #3  
Antiguo 11-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
Hola, mi propuesta va en sentido contrario. En lugar de que la ventana de clientes sea la encargada de asignar el valor seleccionado al formulario que la llamó mejor deja que dicho formulario tome el valor de la ventana de clientes.

A mi me gusta hacer la analogía con un FileOpenDialog. El cuadro de diálogo no tiene ni idea de quién lo llama- de hecho se programó mucho antes de que nosostros hicéramos uso de él. Su labor en la vida es dejar que el usuario seleccione un archivo cuyo nombre "deja" en su propiedad FileName. De esta manera, a cualquier formulario que haga uso de este diálogo le bastará tomar esta propiedad y asignarla como mejor le convenga.

La misma situación ocurre aquí. Muy posiblemente tu formulario de clientes lo uses para que el usuario seleccione uno a fin de introducirlo en una orden o una factura. En lugar de que este formulario de clientes se encargue de la asignación, haz que "deje" al cliente seleccionado (posiblemente su id o campo que uses como llave primaria) en una propiedad pública:

Código Delphi [-]
type
  TFormularioClientes = class(TForm)
  public
    ClienteId: Integer;
  end;

En el evento OnCloseQuery del formulario determinas si el usuario aceptó o canceló la selección. En caso de que haya aceptado, colocas en ClienteId el id del cliente seleccionado.

Así, por ejemplo, el formulario de facturas simplemente haría algo como:

Código Delphi [-]
var
  FrmClientes: TFormularioClientes;

begin
  FrmClientes := TFormularioClientes.Create(nil);

  try
    if FrmClientes.ShowModal = mrOk then
      TablaFacturas.FieldByName('ClienteId').AsInteger := FrmClientes.ClienteId;
  finally
    FrmClientes.Free;
  end;
end;

Y lo mismo haría el formulario de órdenes o cualquier otro formulario que en el futuro requiere el uso de la ventana de clientes.

De esta manera logras que la ventna de clientes sea independiente de los formularios que la llaman y por tanto "a salvo" de cualquier cambio que en un momento dado tengas que hacer en estos formularios (por ejemplo, si cambias el lugar donde se "pone" al cliente en el formulario de facturas, tendrás que cambiar el código del formulario de clientes) y cuando requieras colocar un nuevo formulario que requiera la selección de un cliente no tendrás que tocar el código de éste.

// Saludos
Responder Con Cita
  #4  
Antiguo 11-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
Cita:
Empezado por roman
Código Delphi [-]
TablaFacturas.FieldByName('ClienteId').AsInteger := FrmClientes.ClienteId;
Que valor tiene asignado FrmClientes.ClienteId .

----------
Responder Con Cita
  #5  
Antiguo 11-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
Que valor tiene asignado FrmClientes.ClienteId .
Me cito a mi mismo:

Cita:
Empezado por mi mismo
En el evento OnCloseQuery del formulario determinas si el usuario aceptó o canceló la selección. En caso de que haya aceptado, colocas en ClienteId el id del cliente seleccionado.
Con más detalle, suponiendo que el formulario de clientes tiene la tabla correspondiente TablaClientes, entonces:

Código Delphi [-]
(* Evento CloseQuery de TFrmClientes *)
procedure TFrmClientes.FormCloseQuery(...);
begin
  if ModalResult = mrOk then
    ClientId := TablaClientes.FieldByName('id').AsInteger;
end;

// Saludos
Responder Con Cita
  #6  
Antiguo 12-02-2005
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
Gracias compañero

Roman...!


me sirvio tu propuesta para un poryecto que tengo en marcha!!!!


no pense en este paradigma... es muy bueno...



Nos vemos....




P.S. ya extrañaba estar de vuelta por estos lugares... (estaba en un trabajo haciendo parche sobre parche en VB con SQL Server.... que cosas se ven hoy en dia.... a rotomar el rumbo)
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
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 03:49:29.


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