Ya que te enganchaste con el tema, te comento otro recurso:
Métodos de clase.
Los métodos de clase se aplican a una referencia de clase a diferencia de los métodos aplicados a la instancia de una clase.
Y seguimos con las ventanitas...
Form1:
Código Delphi
[-]
...
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
if TForm2.Mostrar = mrCancel then
ShowMessage('Cancelo')
else
ShowMessage('Acepto');
end;
Form2:
Código Delphi
[-]
...
type
TForm2 = class(TForm)
BitBtnAceptar: TBitBtn;
BitBtnCancelar: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
public
class function Mostrar: TModalResult;
end;
var
Form2: TForm2;
implementation
class function TForm2.Mostrar: TModalResult;
begin
if not Assigned(Form2) then
Form2:= TForm2.Create(nil);
Result:= Form2.ShowModal;
end;
...
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
Form2:= nil;
end;
(Fijate la diferencia en la declaracion
class function o
class procedure, con la de un método normal de instancia de clase)
En el ejemplo puse las propiedades
ModalResult de los BitBtns a
mrOk y
mrCancel respectivamente para capturar como salió de Form2, en Form1.
Un saludo.