右クリックメニューとりあえず一段落した右クリック周り。共通制御に組み込む、ってところが色々と悩んだけどとりあえずはそれなりな形でリリースできたと思う。プロパティの設定やイベントの発生周りについては、特に意識することなく制御されるから。問題になったのは「対象データってどれ?」という話題。マウスカーソルが移動するメニュークリック時の座標使ってもどうしようもない、というか関連がないwこれを解決するとなると・・・メニューを表示する直前に座標を保持する、ってとこなんだろうなぁ・・・。隠れて仕込んでおかないと。この投稿へのリンクVisualStyleElementのGlyphTreeGridViewを用意したはいいけれど、VisualStyleを利用していない環境では思いっきり例外投げてしまうのが発覚。例外見て、「そりゃそうだわなぁ」なんて思える内容なんだけど、実際にはちょっと困ったことが。VisualStyleを適用している際に表示するモノってのはSystem.Windows.Forms.VisualStyles.VisualStyleElementからたどっていってレンダリングできるんだよな。ところが適用していない場合に表示するモノってのが見つからない。個人的には適用していてもしてなくても同じロジックで取れるとありがたいんだけど・・・。この投稿へのリンク2007年6月19日火曜日Office2007今回のお仕事は、出荷状況の都合でOffice2007になることが正式に決定。いやぁ、これでCOMを利用した制御から逃れられるwとなると、課題になるのがOfficeのファイルフォーマットの入手かな?それと、ライブラリのところから2003→2007に変更しないと・・・。あれ、そういえば2003と2007って同居した時にメソッドの拡張やらが行われるからちと問題があった記憶が・・・。メソッドたたいてファイル操作すること自体がなくなるんだし・・・。この投稿へのリンクShaerPointServiceの拡張こういうソリューションが無償で提供されているっていうのが、ものすごい脅威なんだよねぇ。拡張部分ってのはVisualStudioを利用してWebパーツとして作成できるんだから。実際にweb上でも、SharePointService(またはOfficeSharePointServer2007)を利用して構築されたサイトってのも見受けられるし。同じようなグループウェアも色々あるけど、拡張性やら何やらを考えると「システム屋に向いている」のはSharePoint系だなぁ、と思う。ユーザー向けなのはサイボウズだとかDeskNetsとかだろうけど。この投稿へのリンク2007年6月17日日曜日IDataGridViewEditingControlを使う以前にある程度実用的に用意できたサブエディタだけど、ここ最近色々と問題が発覚。そこで断念していた「ちゃんとしたサブエディタ」の設計と実装を始めることに。DataGridViewコントロールの仕組みとして、編集コントロールをホストするタイプの物はIDataGridViewEditingControlを継承している必要があるのと、「ホストされるコントロールを継承している」必要があるんだよね。MSDNなどのサンプルも全てそうなっている。やりたいこととしては、「AP実装者側で自由にサブエディタのGUIやロジックを記述できるようにする」ということなので、ホストされるコントロールの継承、というのが今回は行えないんだよな。んじゃあどうしましょ、というところで今考えているのが編集時にイベントやロジックを全て受け継ぐというか、トラップして制御を委任するだとかそういった制御。イベントだけだとまだ問題ないんだよね。イベント管理のコレクションを元にやってあげれば恐らくできそう。コントロールの配置とかも問題ないかな。その割に、うまくいきそうでいかないんだよなぁ。何か見落としているか、間違ってそうな予感が満載。この投稿へのリンク2007年6月6日水曜日うまくいった昨日のTabIndexはなんとかうまくいった。大体想定したとおりに動いてくれたので良かった・・・。今日出た問題の中にDataGridViewTextBoxCellのWrapMode問題があったなぁ。WrapMode=Trueとしたときだけ例外が発生するという。Reflcterで追っかけてみると、確かにWrapMode=Trueとした場合のロジックで問題がありそうな箇所が発見できた。セルの編集済み書式を取得するメソッドで明示的にStringを返していないといけなかったみたいで・・・。これってWrapModeにTrueを指定したときだけなんだよね。NotSetやFalseをセットした場合は今回みたいな例外は発生しない。DataGridViewTextBoxCellを継承しているコントロール全てに関連する問題だけど、これは仕様なのかバグなのか微妙だな・・・。この投稿へのリンク2007年6月4日月曜日TabIndexだよちくしょう今までほおっておいた、TabIndex問題にようやく取りかかってみた。TabIndex問題はVB6までと.NetでTabIndexのルールが変わり、直属のコンテナが別であれば値の重複は可能、というところ。今のところ考えている手段はControlAdddedイベントの際に、別途用意したArrayListの派生クラスにコントロール名とTabIndexを保持させて、ついでに実際の状態と同じように名称とかを保持していく方法。そんなもんで、今まであまり気にしていなかったSortメソッド関連を色々調査してみることに。ICompare~とかを継承してTabIndex順にソートさせる下準備もしたんで、明日あたりはうまいこといってくれるといいなぁ。