Dal punto di vista teorico, potresti visualizzare il secondo form utilizzando il metodo ShowModal; il controllo del programma non passa al form chiamante (Form1) fino a quando il Form2 è visibile. Per la chiusura del Form2, potresti posizionare su di esso due controlli TBitBtn. Impostando la proprietà Kind nel modo opportuno (vedi la Guida in linea), puoi rendere questi pulsanti capaci di chiudere la form restituendo un valore di ritorno ("Ok" oppure "Annulla"): questo ti serve solamente per stabilire se l'utente ha convalidato la propria scelta.
Se l'utente conferma la selezione del cliente dalla DBGrid, una volta che la Form2 è stata chiusa, puoi ispezionare gli oggetti contenuti al suo interno, tra cui il record corrente del Dataset "CLIENTE", allo scopo di individuare quale record della tabella è stato selezionato. Ti scrivo un esempio:
codice:
procedure TForm1.Button1Click(Sender: TObject);
var
Form2: TForm2;
Id: Integer;
begin
Application.CreateForm(TForm2, Form2);
try
if Form2.ShowModal = mrOk then
begin
Id := Form2.TableRicerca.FieldByName('ID').AsInteger;
Self.TableCliente.Locate('ID', Id, []);
end;
finally
Form2.Free;
end;
end;
(non ho testato il codice per questioni di tempo)
Fai qualche prova...
Ciao!