Для WampServer 2.2 с Apache 2.4.2 я получил:
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require local
Да, использовать безопасно Бесплатно
после вызова ShowModal
.
Случаи, когда вам нужно использовать Release
, - это случаи, когда вы находитесь в середине обработчика события (например, OnClick
), когда дальнейшая обработка после события будет иметь для доступа к форме. В этом случае вызов Release
вместо этого отправляет сообщение CM_RELEASE
, которое не освобождает событие до тех пор, пока обработчик события не будет завершен и управление не будет возвращено насосу сообщений ( ProcessMessages
] / Application.Run
). ShowModal
не возвращается до тех пор, пока обработчик событий не завершит работу и управление не заставит его выполнить резервное копирование стека,
Это зависит. Free
Форма не вызывает обработчики событий, которые выполняет Release
, и любые сообщения, которые могли быть отправлены в форму и помещены в очередь, не будут обработаны. Таким образом, хотя во многих, а возможно, и в большинстве случаев вызов Free
(или FreeAndNil
) будет работать нормально, это может привести к весьма странному поведению по, казалось бы, случайным причинам.
Альтернатива, которая заключается в том, что Я бы посоветовал в событии OnClose установить для Action значение caFree, например:
procedure FormClose(Sender : TObject; Action : TCloseAction)
begin
Action := caFree;
end;
Затем вы можете написать такой код:
TMyForm.Create(nil).ShowModal;
И вам не нужно специально освобождать форму, так как она '
Безусловно, и вы также можете использовать процедуру FreeAndNil. Подпрограмма FreeAndNil освободит объект только в том случае, если он еще не равен nil, а также установит для него значение nil после освобождения. Если вы позвоните бесплатно прямо на объект, который уже был освобожден, вы получите сообщение о нарушении прав доступа.
MyForm := TMyForm.Create(nil);
try
MyForm.ShowModal;
finally
FreeAndNil(MyForm);
end;