掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
継承がよくわかりません。DBGRID (ID:34934)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
質問者さんが疑問に思っているのは、 実際の継承クラスであるTExDBGridとは全然関係ないメソッドの中から procedure TForm1.DBGrid1DrawColumnCell(...) ... If TExDBGrid(Sender).Row = GCoord.Y Then ... みたいに勝手にキャストしただけでなんでprotectedのメンバにアクセスできるのか、ということでしょう。 (ちなみにこのSenderは本当のTExDBGridではなく、 あくまでも基底クラスであるTDBGridのインスタンスです。) 確かに通常のオブジェクト指向の常識だとこれは理解できません。 実はDelphiの場合、「クラスが宣言されているunit内」であれば 誰でもそのクラスのprotectedメンバを参照できます。(C++でいうfriendのようなもの) これを逆手にとって、ダミーの継承クラスを宣言してやることで 元のクラスのprotectedメンバにアクセスしてしまうことが可能です。 このテクニックは旧Delphi FAQでも(ちょっとだけですが)紹介されています。 http://support.codegear.com/article/37436 の「StringGrid で入力文字数の制限を行なう方法」
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.