2007年11月29日木曜日

VistaでのVB6ランタイム

どうやらちゃんとWindowsInstallerを利用してインストールしても、レジストリに登録失敗するケースがあるみたい。

今回のケースではTabCtl32.ocxとMSFlxGrd.ocxがおかしくなっていた。再度Regsvr32.exeで登録しなおすことで問題は解決できたんだけど・・・。ネット上を見ていると、このほかにもWinSock周りで同様の現象がでるみたい。

UACをOFFにした状態でインストール、その後UACをONにしたりしても同じような状況になるって話もでてるね。
なんか特定のコンポーネントに由来した問題のような気もするな・・・。

2007年11月16日金曜日

DataGridViewとContextMenuStrip

ContextMenuStripを利用してちょっとしたメニューを出したりすることはよくあるんだけど、その発生元がDataGridViewになった場合はちょっと手間が必要になる。

というのも、DataGridView.ContextMenuStripプロパティで設定したものは、DataGridView全体に対して有効になるので、例えば列ヘッダ(ColumnHeader)や行ヘッダ(RowHeader)でContextMenuStripを切り替えたいなんて時には、ちょっとだけ細工が必要になるんだよね。

  • 列ヘッダ

列ヘッダで独自にContextMenuStripを使う場合は、DataGridViewColumn.HeaderCell.ContextMenuStrip、と下っていって設定する。それで今のところ最もベターなロジック記述場所はというと、DataGridView.ColumnAddedイベントの中。
Columnが追加された際に発生するイベントごとにContextMenuStripを指定してあげればいいかな、と思われ。
単発プログラムでなく汎用的に使う場合とかなら、DataGridView.OnColumnAddedメソッドをオーバーライドして対応するのがベターかな。

  • 行ヘッダ

行ヘッダの場合も似たような事情で、DataGridViewRow.HeaderCell.ContextMenuStrip、となる。
列ヘッダの場合と異なるのは、「今存在する全ての行に対して設定する必要がある」というところ。なのでベターな記述場所はDataGridView.RowsAddedイベントまたはDataGridView.OnRowsAddedメソッドとなると思う。

2007年11月13日火曜日

何かのコントロールを継承したDataGridViewEditingControlで

コンストラクタとかでTabStopにTrueを設定しておかないと、Tabキーを押した際にフォーカス遷移がただしく行われなくなるんだねぇ・・・。

考えてみれば当たり前なんだけど、思いっきり失念していたのでメモ。

2007年11月8日木曜日

RealVNCだめぽ

どうやらFree版ではVista対応を行わない様子。
久々にサイトをのぞいてみると、レイアウトが思い切り変更されて、Rev4.3 Release!みたいな宣伝が。

んで、そっち系統はちゃんとVista対応しているんだよねぇ・・・。
FreeEditionはRev4.1で取り残されているし。切捨て時だな、これは。

2007年11月7日水曜日

SearchServer?

最近β2がリリースされた、検索ソリューション用のサーバアプリ・・・つーか、扱いはSharePointServiceみたいなもんだな、これ。
どうやらEnterpriseSearch的なことができるようになる、ということらしいんだけど、英語サイトしかないのでまだ詳しく見てないw

一時期NamazuとKakasi使って社内情報に対する検索って(隠れて)用意したことはあったけど、おそらく到着地点は同じだろうね。あとはどれくらい使いやすいか、とどこまで検索できるか、ってところかな?

JITデバッガの無効化

Tracが落ちる、というかApacheが例外吐いてなおかつJITデバッガを起動しようとしてくれやがる件で、ためしにJITデバッガ自体を無効にしてみた。忘れないために手を入れたところをメモ。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger

この2つのレジストリキーを削除。
VisualStudioのインストールによってJITデバッガが有効になってしまい、今までキャッチしていなかった例外をキャッチして、デバッグダイアログを表示してしまう、ってのが事の本質だなぁ。

インストールした、というけどサーバー上に入れていたVisualStudioって、SqlServerのReportingService用のヤツでVBもC#もインストールしていないから実質デバッグできないヤツなんだよね。そういう判断をしてJITデバッガのスイッチが設定されていればいいんだけど・・・問答無用でOnにしてくれているので、Apacheが例外はいたときにダイアログが出てしまい、OK押下まで再起動しない → 落ちている、という状況になっているワケだ。

これで大丈夫になることを切に願うw

2007年11月6日火曜日

VB6のコレクションと.Netのコレクション

久々にVB6の修正をやっていて気づいた。
VB6のコレクションにはClearメソッドがない・・・。

うわー、単純だけど地味に効いてくるなぁ・・・。よくCollectionの拡張しないでやっていたね、自分。