Potresti aggiungere alla sezione private della form secondaria un campo di tipo TFormOrigine (tipo della form primaria) nel quale memorizzare un riferimento alla form primaria chiamante che visualizza la form secondaria.
Tale valore può essere assegnato introducendo un nuovo metodo nella form secondaria al quale viene passato come parametro il riferimento alla form primaria da memorizzare all'interno del campo privato; successivamente, avviene la visualizzazione attraverso il metodo Show oppure ShowModal.
La classe della form secondaria richiamata potrebbe essere fatta così:
codice:
TCalledForm = class(TForm)
private
FCallingForm: TCallingForm;
public
procedure ShowMe(ACallingForm: TCallingForm);
end;
Il metodo ShowMe si potrebbe implementare in questo modo:
codice:
procedure TCalledForm.ShowMe(ACallingForm: TCallingForm);
begin
FCallingForm := ACallingForm;
ShowModal;
end;
Quando avviene un doppio clic sulla griglia, l'evento esegue tutte le operazioni necessarie incluso l'aggiornamento dell'etichetta sulla form chiamante di tipo TCallingForm:
codice:
procedure TCalledForm.DBGrid1DblClick(Sender: TObject);
begin
if FCallingForm <> nil then
FCallingForm.SomeLabel.Caption := DBGrid1.Fields[0].AsString;
end;
Spero di aver reso il concetto.