DelFusa Blog 総本山

プログラミングの話題とかです。

NEW | PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

Grid系の記事追加と、Gridを拡張するクラス



    ∧,,∧  ____
   ミ,,゚Д゚彡       \
   ミ  ミ/ ̄ ̄ ̄ ̄ ̄ ̄ヽ
  @゙,,,,,,,ノ※※※※※※※ゝ
       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

さらに、末ですな~~世紀末・・・ではないですな。
より、よいお年を!


また、Grid系の記事を追加しておきました。

DrawGrid/StringGridで拡張クラスを使用してFixedCellをクリックできるようにする方法




なんとなく実装できるかな?
と、思いつつ、拡張クラス的な実装をやってみたら
うまくいったのでよかったです。

Grid1.OnDrawCellの実装を
別のクラス(TFixedGridClickExtension)で実装して
Grid1.OnDrawCellに割り込む形にしてみました。

イベントってうまいこと横取りできるものですね。

もう5年も前のことなんですが
大学時代の友人でJava使いの奴に
アスペクト指向ってどういうものか、
という話題で教えてもらったことがあるのですが

「簡単にいうと、たとえばGrid1.OnMouseUpというイベントに対して
通常はGrid1MouseUpというイベントハンドラが割り当たるだろうが
後から割り込みで、OnMouseUpList.Add(LogWrite)というような
イベントハンドラに対してログ吐き出しコードを追加できてしまうような
そういうやり方のことだよ」

と、聞いていました。
Javaの実装コードはよくわかりませんが
.NETではイベントに対してデリゲートというものを追加できるので
こういう事ができるそうな。

これは、どういう効果をもたらすかというと、
デバッグ時などに元コードにはあまり影響を与えずに
各イベントの呼び出し時のログ出力コードなどがやりやすくなるわけです。

Create時に『OnなんとかEventList.Add(ログ出力メソッド)』という形の行を
数行追加すると、デバッグログ出力モードでアプリが動いたり、
という事ができます。

これと同じような事が、今回書いた拡張クラス、
適当に命名すると、ControlExtensionクラスとして自分で実装できそうです。

ControlExtension := TControlExtension.Create(OriginalControl);
これのイベントをリスト実装しておいて
ControlExtension.OnMouseUpList.Add(マウスアップイベントハンドラ1);
ControlExtension.OnMouseUpList.Add(マウスアップイベントハンドラ2);
ControlExtension.OnMouseUpList.Add(デバッグ用ログ出力イベントハンドラ);
こんな事も拡張クラスをつかって可能なのかしらね。

出来ることはわかっていても、手間がかかりすぎて
面倒でやらないと思いますけどネ....

ここで、欲しくなってきたのは
1、任意型のリストがすぐ作れる仕組み。
(→任意型の動的配列はすぐ作れるっけ?)
2、既存VCLの型のリストが普通に全部欲しい
IntegerListとかRectListとかPointListとか
3、上記のようなイベントリストを使いたい。

こういうのが、言語仕様やライブラリとして実装してほしいです。
とりあえず、1、2、の実装は
うちの、TemplateListでまかなえるといえば、まかなえるのですが、
TemplateList

微妙に手間だし、DelphiPascal標準実装して欲しいな。

.NETのジェネリクス後追い実装だけが、ユーザーの望むものでもないわけで
Win32でも動くようなかたちでの、独自でも上記実装とかってしてほしい。
スポンサーサイト

| 未分類 | 00:58 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://delfusa.blog65.fc2.com/tb.php/96-e741b071

TRACKBACK

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。