In einem Event-Handler oder Callback-Handler würde ich niemals die Instanz entsorgen, die diesen Event/Callback-Handler aufruft.
Das ist
IMHO eigentlich Basiswissen.
Da ja blockierende Dialoge unter Android nicht erlaubt sind, gibt es eine überladene Version von Showmodal, die Funktion wird dann asynchron ausgeführt (d.h. nach Aufruf der Funktion geht die Programmausführung in der aufrufenden Prozedur direkt weiter, da wäre es dann zu früh, den Dialog wieder freizugeben).
Insofern erschien es mir durchaus denkbar, dass per "DisposeOf" (welches ja quasi ein Refcount unter den Mobilen Plattformen ist) der Aufruf auch innerhalb der anonymen Prozedur erlaubt ist, da die tatsächliche Freigabe erst erfolgt, wenn keine Bezüge mehr bestehen.
Jedenfalls hatte ich das auch so in verschiedenen Code-Schnippseln dargestellt gefunden (Stack overflow).
Aber ist wohl doch nicht ganz so unproblematisch.
Jedenfalls führt der hier beschriebene Weg führt auch zu einem ordnungsgemäßen Ergebnis:
http://docwiki.embarcadero.com/RADSt...l_Dialog_Boxes
Also gar kein DisposeOf (oder free) aufrufen, sondern im Close-Event der Form .cafree für Closeaction setzen.