( ゚Д゚)ノ Delギコ猫のプログラミング相談室part2

このエントリーをはてなブックマークに追加
856Delギコ
  ∧∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚Д゚)  < 日本語くちゃくちゃになってしまったの
 ヽ/つ且~~  \ゆるしたもれ。
  (__ _)

標準コンポTStrGridに対してTMyGridBarを作成しました。
んで、このTMyGridBarはGridプロパでGridを一つ選択できます。
選択したとたんにGridをサブクラス化して
とあるGridに流れるMessageを見てTMyGridBarにお知らせしまする。

で、このTMyGridBarを複数作ってからプロパティで
ひとつのStringGridを指定しました。

StringGridは何回も何回もサブクラス化されまする。
それはうまくいくのですが
857Delギコ:01/09/20 12:15
   ∧ ∧    コマットルデ
   (,,゚Д゚)∫
   /  つ旦O
 〜(._[ ̄ ̄ ̄.]
       ̄ ̄ ̄
___/\_____
その状態から
MyGridBar1.Gridプロパにnilを代入したときに
(もしくはStringGrid2を代入してもいいよ)
元のStringGrid1のWndProcを正しく戻してやらなきゃいけないのだけど。
それが出来ないの。

通常。サブクラス化では一度StringGridのWndProcをバッファに入れるじゃない。
 FOldWndProc := StrGrid.WndProc;
 StrGrid.WndProc := NewGridWndProc;//New...はメソッド

で、元に戻すときは
 StrGrid.WndProc := FOldWndProc
 FOldWndProc := nil;

だよねえ。このStrGrid.WndProcが他の所でサブクラス化されているから
勝手にもとのものを代入していいのかわるいのか…
というか、Delがフリーズしたりアクセスバイオるからダメなんだろう…

うーん、むずかしけりよ。
なんか、複雑に考えすぎているのかな。