Veo que ya lo tienes resuelto. Comparto de todas formas el modo en el que resuelvo yo este tipo de tarea por si pudiera resultar interesante. Lo que hago en estos casos es sobrecargar el constructor del formulario que se crea desde un botón para que se le pueda pasar el propio botón "creador" como argumento al constructor del formulario. Un ejemplo sencillo de un formulario con un TEdit y un TButton que al llamar escribir un texto en el edit y pulsar el botón cambia el Caption del botón desde el que se creó ese formulario:
Código Delphi
[-]
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
edt1: TEdit;
btn1: TButton;
procedure btn1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
BotonCreador: TButton;
public
constructor Create(AOwner: TComponent;aButton:tbutton); overload;
end;
implementation
{$R *.dfm}
procedure TForm2.btn1Click(Sender: TObject);
begin
BotonCreador.caption := edt1.text;
end;
constructor TForm2.Create(AOwner: TComponent; aButton: tbutton);
begin
create(aOwner);
self.BotonCreador := aButton;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= cafree;
end;
end.
El método que crea formularios y se llamará en el onclick de cada boton creado sería una cosa así:
Código Delphi
[-]
procedure TForm1.ClickBotonCreador(Sender: TObject);
begin
with TForm2.create(self,tButton(Sender)) do
showmodal;
end;