掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的フレームの再作成でエラー (ID:22616)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>えーと 2006/09/02(土) 21:43:40 >モーダルフォームでは、自殺でも Release は使えない。 素朴な疑問なのですが、別にモーダルでReleaseが使えないって事ではないんじゃないでしょうか? モーダルは必ずCloseしなければならない。 Releaseは非同期Free。 なので procedure TForm2.Button1Click(Sender: TObject); begin Self.Release; Self.Close; end; こうすれば、Form2が閉じられた後に解放されることが保証されるはず。 勿論こんな事する意味がないですけど。 だからモードレスはRelease、モーダルはFreeとかいう制限は特に無いと思うのですが。 それと、まささんの言われている事は、特殊な例外というほどの事では 無いように思いました。 ちょっとした(だけど大きな)勘違いと、誤解を招きやすいヘルプの所為かなと。 最後に、 >えーと 2006/09/02(土) 23:51:41 >これは、間違いです。というか、どんな場合も Release を使えば安心、ということ >はあるでしょうけど、インスタンス変数を nil にセットしたいときもありますので >自殺でない場合は、Free や FreeAndNil を使ってもいいと思います。 例えばForm1からForm2(モードレス)を解放するときに procedure TForm1.Button1Click(Sender: TObject); begin Form2.Free; Form2 := nil; end; procedure TForm1.Button1Click(Sender: TObject); begin FreeAndNil(Form2); end; procedure TForm1.Button1Click(Sender: TObject); begin Form2.Release; Form2 := nil; end; この3つのメソッドは同じ事をしているので >インスタンス変数を nil にセットしたいときもありますので この様な理由でFree或いはFreeAndNilを使うわけではないと思います。 細かいツッコミばかりですみません。揚げ足取りが目的ではありません。 えーとさんのように見識ある方が発言される事は多くの方が信用される と思うので敢えて突っ込んでみました。 個人的な結論としては、 外部から同期解放ならFree、内部或いは外部から非同期解放ならReleaseということになると思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.