TStringGrid の OnDrawCell イベントに関数割り当てしたい

解決


かふぇ  2006-10-23 21:05:59  No: 23618  IP: 192.*.*.*

お世話になっています。かふぇです。

質問ですが、自作コンポーネント内でTStringGridを作成しています。
OnEnter イベントには

grid.OnEnter := _OnEnter;    // パラメータは Sender:TObject

と関数を割り当てられたのですが、

grid.OnDrawCell := _DrawCell;

OnDrawCell イベントに関数を割り当てようとすると
TDrawCellEvent にキャストできないと怒られてしまいました。

_DrawCell 関数は次のように定義しています。

_DrawCell( Sender:TObject; (ACol: Integer; ARow: Integer;
    ARect: TRect; AState: TGridDrawState );

何が悪いのでしょうか?ご教授お願いします。

編集 削除
えーと  2006-10-23 22:11:21  No: 23619  IP: 192.*.*.*

単独の関数や手続きじゃだめだよ、型があわないから。メソッドにしないと。

編集 削除
かふぇ  2006-10-24 10:32:00  No: 23620  IP: 192.*.*.*

えーとさん早速の回答ありがとうございました。

関数定義部分をはしょりすぎてしまって誤解させてしまいました。
失礼しました。

上記の_DrawCell は うまく割り当てられた _OnEnter と同じ
クラスメンバーとしていました。

その後、TDrawCellEvent の定義を探して型を再確認してみました。
結果、私の定義中の「ARect: TRect」には編集不可を示す
「const」が足りないことが分かりました。
(C++ Builderでは、Grids.hpp中に定義されています。)

当方 C++ Builder でして、Delphiでは「const」がどう変わるのか分からないのですが、単純に型が合っていなかっただけでした。

お騒がせいたしました。

編集 削除