Lo mejor para ello es usar propiedades:
Código Delphi
[-]
TFormConsulta = class (TForm)
private
FClave:integer;
procedure SetClave(const Value:integer);
public
property Clave:integer read FClave write SetClave;
end;
implementation
procedure TFormConsulta.SetClave(const Value:integer);
begin
if Value <> FClave then
begin
if not dataset.Active then
dataset.Open;
FClave := Value;
if not dataset.Locate('NombreCampo', Value, []) then
ShowMessage('no encuentro el registro con el valor ' + inttostr(Value))
else
ShowMessage('ok, estoy situado en el registro');
end;
end;
procedure TFormConsulta.Button1Click
begin
With TFormBusqueda.Create(nil) do
begin
if ShowModal = mrOk then
Clave := Resultado;
Free;
end;
El Form de búsqueda se muestra como modal, tendrá una variable llamada Resultado de tipo integer:
Código Delphi
[-]
Resultado := Formbusqueda.DAtasetPrincipal.FieldByname('clave').asinteger;
self.ModalResult := mrOk;
El funcionamiento:
En la ventana de consulta pulsas el button1, se abre la ventana de busqueda y espera a que el usuario dé doble clic sobre una fila (siempre se devuelve la clave primaria, ya que a partir de ahí podremos tomar cualquier campo de ese registro), la ventana se cierra y la ventana de consulta estará situado en ese registro.
Espero sea lo que necesites.
Saludos