Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #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
 



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 20:05:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi