2006年10月14日土曜日

ダメ押し

やはりElTabelle。試行錯誤していた結果、レイアウトとして作成するテンプレートクラスでは、Objectとして受け渡すことが出来たとしてもその情報を保持しているとは限らなかったのが判明・・・。実際はテンプレートだけでなく、全体的になんだけど。

個人的な意見なんだけど、Objectとして渡された物を勝手に変換するのはどうよ?、と思っているのよね。コンボボックスにaddしたものと、Itemsから拾ってきた物が違っていたら結構困ると思うんだけどなぁ・・・。レスポンスとかの問題なんだろうけど。

結局テンプレ情報から自前で保持領域を確保しないといけない事に。んー、テンプレとセルの書式が異なる場合は結構おてあげかも知れない。汎用的なのを諦めて、デザインに制限つけるしかないかな?

2006年10月11日水曜日

ElTabelle・・・んーむ

なんですかコイツのコンボボックスと拡張コンボボックスは。

ヘルプにある「通常のコンボボックスと同様に利用できます」って全然違うじゃないデスカ!

感覚的にはVB6までのコンボボックスなんだよなぁ、これ。.Netに移ってようやっとAddするのはクラスのインスタンス、ってところに慣れ親しんだのに。

いや、だからってダメじゃないし気持ちは分かるんだが(w

今回はそのあたりのコーディングも統一しようとしてるからねぇ・・・。ちょっと苦労しそうな予感。

2006年10月6日金曜日

あれれ?

ElTabelle続行中。

今日の問題はOnEnterをオーバーライドして独自イベントを発生させた際に、BaseGridライブラリ(ElTabelleのライブラリ)でぬるぽが発生してしまっていた。なにか悪い事をやっているからとは思うんだけど、いかんせんなにが悪さしているかがさっぱりおっかけれない。Exception見ても全然情報載ってないんだよねぇ・・・。
まぁ、来週中にどうにかしないとなぁ。

それともう一つ困っているのが、ComboBoxコントロールでどうやったらDoubleClickをイベントとして拾えるか、だな。ComboBoxコントロール自体はDoubleClickイベントは発生しないものなんだけど、色々事情があって今回は拾いたいのよね。どこかでメッセージが捨てられているのかな、とおもってWndProcを調べてみたけどメッセージ自体届いていなかった。このあたり知識が足りないから、なぜ届かないのかが全然判ってない。

しかしComboBoxってMouseDoubleClickイベントもあるんだけど、こいつはどうやったら発生するんだろう・・・?

2006年10月3日火曜日

またElTabbleか!

ElTabbleのラッパークラスと格闘中。しかしなんというか、調べれば調べるだけ、自分と肌が合わないコントロールなことで・・・。なんというか、「そのまま使うことを前提としてます」というコントロールだからなんだろうけどねぇ・・・。

とりあえず、DragDropでの行並び替えと、コンテキストメニューからの行削除は実装して、共通イベント制御へと流すところまではOKになったから、実用には耐えられるんだけどね。

あとはキー制御と色周り・・・色はあたりをつけてあるからいいけど、問題はキー制御だなぁ。

2006年9月30日土曜日

データクラスなんだけど

よく見ている@ITでの掲示板の一つ。

RDBアプリケーションのためのパターン(http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33879&forum=7&9)

ORマッピングは汎用的な設計パターンな話題では外すべきかなぁ、と思っているんだよねぇ。これってリレーションというかエンティティをオブジェクトに変換する際の違いというか、そこら辺を吸収するための手段であって、設計パターンじゃないよなぁ・・・なんて。自分の理解が間違っている様な気もする。

かといって、今自分でやっている方式も全然ベストではないしねぇ。

2006年9月26日火曜日

ElTabbleちょっとだけ

ラッパークラス作成のため、イベント周りを調査してもらっていたり。
(ちょっと同僚と新人にそれぞれ別系統のイベント調査をお願いしてみた)

新人にはなんちゅーか、説明がうまく伝わらなかったので自分の方でアタリをつけてみたんだけど、DataGridViewやっていた後だからか、ElTabbleってイベント制御がちょっとヒ微妙な感じ。

別にダメって事じゃないけど、EnteredCellやらEnterEditやらセル周りのイベント発生させて置いて、その状態から別コントロールへフォーカスを移すと、LeaveEdit→LeaveとLeaveCell発生しないってのがなんというか変な感じ。

まぁ、触っていると「カレントセルが移動していない」のが判ったので、LeaveCellが発生していないのは理解できたんだけど・・・なんか納得いかないんだよねぇ。

いや、ダメじゃないんだけど。

2006年9月24日日曜日

EnterをTabに・・・

業務系のアプリで必ずと言っていいほど出てくるこの話。そのため、色々なサイトでこれに対するロジックが公表されているんだけど。

SelectNextControlメソッドでは対応できないケースの方が多いんだけど、それでもどうしてそういったサンプルが多いんだろう。理由も簡単で、DataGridViewやその他グリッドなコントロールが絡むとほぼ間違いなく、Enterで次のセルへ移動してほしい、という話もでるだろうから。

だから業務としてはProcessDialogKeyとかそのあたりのメソッドをオーバーライドするのが最もいいのだろうけど・・・利用するコントロールによっては、コントロール側で制御を行う必要があるんだよねぇ(DataGridViewもそう)。

Form側で統一したロジックにしようとすると、こういった問題がでるので各種コントロール側でキー制御を行う、というのが今のところ最もスマートな方法かもしれないね。

2006年9月21日木曜日

次なる強敵

DataGridViewは少しずつだけど対応が進んできた。でも次に控えているヤツがなにげに難しい・・・。

んーTabControlのイベントトラップをやろうとしたんだけど、こいつってIDEでイベントがでてこない。なんか嫌な雰囲気だなぁ、と思っていたらTabControlに関連するTabPage側で結構制御が必要な構造になっていたのねぇ・・・。

んー、まともにやろうとするとCodeDomあたりも研究しないといけなさそうで時間かかりそうだなぁ。

2006年9月16日土曜日

再々度DataGridView

今になってDataGridViewの仕様とぶつかる問題が発覚。うーん、今のところBindingSource関係はほとんど使わないようにしてきたんだけど、これがアダになったのかなぁ・・・という感じ。

問題の発端はActiveControlが変更された際に、イベントを発生させようとしていた事なんだよなぁ。この瞬間をトラップしようとすると、どうしても各コントロールのEnterとLeaveイベントを利用した制御になるんだよなぁ。ところが、DataGridViewは仕様上Enter関連とLeave関連のイベントでは色々と出来ないことが発生してしまう・・・。

んー、今のところ望みとなるのはGotFocus関連なんだが・・・。設定によっては、GotFocusは結構後になってからしか発生しないのが判っているから、非常に手詰まり。

もう一つ考えているのは、DataGridViewRowCollectionクラスあたりに手をいれて、EnterまたはLeaveイベントの最中はキューイングするだけにして・・・と考えたりもするんだけど、そこまでやらないとダメ?

2006年9月11日月曜日

製品版が到着

ようやっとVS2005Pro版とElTabbleの製品版が到着。

今の今までExpressEditionにて無償環境まっしぐらな開発を行っていたんだけどようやく普通に開発ができるのよ。普通にセットアップも作れるのよ(もしかしたらWix使うかも、と考えていたからなぁ・・・ClickOnceではちょっと面倒が多くて)

あー一番嬉しいと思うのは、「新しい項目の追加」で利用できる項目が一気に増えたことかな。これだけで結構嬉しい。

さて、ElTabbleをラップする共通クラス作らないとね。