名前 題名 ▼ takaさん > ▼ takiさん > > Button3は配列にnilを代入しています。 > > それでも、生成したpanelをクリックすると色が変わります。 > > Button3変数 > 変数は ここにありますよという、封筒の宛先にすぎませんので > Button3 にnilをいれても 封筒の宛先を砂消しで消すことにしかなりませんので宛先の住所地はなくなりません。 > Button3本体を消滅させるのは巡航ミサイルの Free 手続きです > ミサイルを飛ばした後は、だれが撃ったかわからないようにButton3変数を焼却します > > 変数(封筒)がなくても、建物にはなんら影響はありません > 封筒がなくても住所地建物は存在します。廃墟の場合もあります。 > > 子コントロールをFreeしたあとに 間違って呼び出すと 宛先不明・不在でエラーとして返送されますので > 念のためnilを代入しておきます > > > Delphiヘルプより引用 > > アプリケーションでは RemoveControl メソッドを直接呼び出さないでください。 > > 実行時には,子コントロールの Parent プロパティを使って Controls 配列から削除できます。 > > 手動でコントロールの消滅を強制執行したい場合は > コントロール.Free; > > if Not(csDestroyingHandle in ControlState) And Assigned(Button3) then > begin > FreeAndNil(Button3); > end; > > PanelArray[i]に登録したものを動的に破棄したい場合は、 > if Not(csDestroyingHandle in ControlState) And Assigned(PanelArray[i]) then > begin > // try exceptでくくったほうが安全 > FreeAndNil(PanelArray[i]); > // 同じ配列内で親子関係のパネルがネストされている場合は注意 > end; > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link