Hola,
El código que muestras
vejerf parece correcto, y, la idea de que el "ModalResult" lo determinen la oportuna propiedad de los botones "Aceptar" y "Cancelar", también. Así que lo que no se entiende es que no te funcione tal como se espera. Yo, personalmente, acabo de probarlo, y, efectivamente, funciona. Por lo que no sé qué decir... sino que algo por ahí se nos escapa, pero, que, no tiene que ver con lo que discutimos, sino con alguna otra cosa.
Código Delphi
[-]
uses
Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(nil) do
try
if ShowModal() = mrOk then
ShowMessage('Aceptaste el diálogo')
else
ShowMessage('Cancelaste el diálogo');
finally
Free();
end;
end;