Ver Mensaje Individual
  #5  
Antiguo 11-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
Al parecer, requieres algo distinto a lo que yo propongo.

El botón Aceptar no debe enviar nada a ningún Form. El Form que invoca el frame, será el responsable de capturar los datos.

Lo más cómodo, crear en el Frame un par de propiedades, esto hará mucho más legible el código cuando usemos el frame en todas las ventanas.
Código Delphi [-]
type TAgente = Class(TFrame)

private
  function GetCodigo:integer;
  procedure Setcodigo(Value:integer);
  function GetAgente:string;
public
   property Codigo: integer read GetCodigo write SetCodigo;
   property Agente: string read  GetAgente; // propiedad de solo lectura
end;

implementation

function TAgente.GetCodigo:integer;
begin 
  Result := tblClientes.Fieldbyname('codigo').Asinteger;
end;

procedure TAgente.SetCodigo(Value :integer);
begin
  tblClientes.Open; // debe estar abierta la tabla antes de buscar
  if Value <> GetCodigo then
  begin 
     if not tblcliente.locate('codigo', value, []) then
        ShowMessage('No se encuentra el agente con código ' + inttostr(Value));
  end;

function TAgente.GetAgente:string;
begin
  Result := tblCliente.fieldbyname('Nombre').AsString;
end;

Esto es algo más complejo de lo que has pedido, pero lo necesitarás.

Lo que he hecho es definir 2 propiedades que tendrán los datos del agente elegido en el grid, además doy la posibilidad de que muestre un agente seleccionado al mostrar el frame.

por ejemplo: Toda venta de un negocio, tiene asociado un "Agente de venta", bien, desde una ventana "Ventas" quiero mostrar el frame y seleccionar el agente de código 20:

"F" es un frame TAgente puesto en la ventana "ventas".
Código Delphi [-]
procedure Tventa.Button1Click(...);
begin 
  F.Codigo := 20; 
end;

Si ahora en la ventana de ventas, queremos saber qué agente hay seleccionado en el frame:
Código Delphi [-]
procedure Tventas.TablaVentasBeforePost(....);
begin
  tablaVentas.CodigoAgente := F.Codigo; 
  label1.caption := F.Agente;  // el nombre del agente no sé que hacer con él
  // lo pongo en un label 
end;

Saludos y espero se entienda, si no, dime cualquier cosa Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita