Ver Mensaje Individual
  #7  
Antiguo 10-12-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Yo en estos casos actúo así:
Código Delphi [-]

type TBuscar = (bCliente, bFactura);

Function Buscar( BuscarEn:TBuscar; InternalOpen :Boolean):integer;
begin

Result := -1;
case BuscarEn of
   bCliente : 
     with TFrmbusca.Create(nil) do
     try
       if ShowModal = mrOk then 
         // en la ventana de busqueda se seleccionó un cliente válido
         Result := ValorSeleccionadoEnTFrmBusca;
     finally
         Free;
     end;
end;

if (InternalOpen) then
  if Result <> -1 then  // si no elige nada en la ventana de búsqueda, Result tendrá el valor -1.
   AbrirVentana(BuscarEn, Result); 
// abrirá la ventana mdichild
// con el valor que tenga Result, obviamente será clave primaria de la tabla cliente.
end;

Desde cualquier sitio de la aplicación, llamo a la función buscar:

- Si InternalOpen es false, me devuelve el 'id' de esa tabla, es decir, el cliente que ha seleccionado el usuario en la ventana de búsqueda, por tanto, me sirve dicha rutina como un LookUp (cuando el usuario necesita buscar un valor).
- Si InternalOpen es true, ejecutará AbrirVentana y allí buscará si hay abierta una ventana de tipo cliente, la trae al frente y hace visualizar el cliente elegido en la búsqueda.

Como ves, la propia ventana modal no abre la mdiChild, sino que primero se cierra la modal y la rutina Busca es la que se encarga de abrir o no la mdiChild.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 10-12-2007 a las 01:06:26.
Responder Con Cita