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

解決


かふぇ  2006-10-24 06:05:59  No: 23618

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

質問ですが、自作コンポーネント内で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-24 07:11:21  No: 23619

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


かふぇ  2006-10-24 19:32:00  No: 23620

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

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

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

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

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

お騒がせいたしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加