Диалоги в проекте наследуются от базового класса TRootDialog, который содержит панель с диалоговыми кнопками TssButtonPanel и основной виртуальный метод DoFinish для выполнения действия при закрытии диалога. В отличие от диалоговых окон, реализованных в VCL, диалоги в проекте Tillypad Manager не забирают управление основным потоком на время существования диалога. Это позволяет реализовать локальную модальность и другие более гибкие алгоритмы в проектировании. Поэтому создание диалога привычным способом не даст ожидаемого результата:
with TRootDialog.Create(Self) do
try
if ShowModal(nil, nil) = mrOK then
DoSomething;
finally
Free;
end;
Вызов метода ShowModal не захватит управление потоком и форма сразу уничтожится, не успев появиться на экране. Уничтожать форму по месту создания не нужно, она сделает это сама при закрытии. А в метод ShowModal можно передать процедуру OnCloseModal и форму AStopBlockForm. Процедура OnCloseModal исполнится при закрытии формы. Также действие по закрытию диалога можно реализовать перекрытием виртуального метода DoFinish. В параметр AStopBlockForm передаётся блокируемая форма. Например:
TRootDialog.Create(Self).ShowModal(DialogCallBack, Self);
...
procedure TMyForm. DialogCallBack(Sender: TssForm; ModalResult: Integer);
begin
if ModalResult = mrOk then
DoSomething;
end;