A7Mの日記: 与太話:正規表現チェッカーでの結果表示部分の実装
C++Builderでboost::regexでマッチした部分を色分けして表示することを考えてみたら、意外と難しそう。('A`)
以下の候補について調べてみたけど、どれも制限がある。
TRichEdit → 文字列のフォントが途中で化ける(特に、FontLinkした奴)EM_GETLANGOPTIONSでデュアルフォントモードを無効にすればOK!!
TMemo → オーナードローが出来ない(多分)
TWebBrowser → 結果をHTMLに変換して表示ってのはちょっと・・・
TUniSynEdit → C++Builder2009にうまくインストールできない
TJv*Editor → 日本語が化けまくって使い物にならない
TEditor → 1行あたり1000文字の制限
表示部分そのものを全部自分で実装 → ('A`)マンドクセ
さぁ、どうする?>俺
TListBoxにオーナードローするのが一番無難かな・・・。
あるいは、複数行はサポートせずに、結果を1行単位で、かつ、縦方向に表示するとか。
やりたいことは正規表現のチェックと正規表現をC/C++の文字列リテラルに変換したいだけで、ここまで凝る必要があるのかどうかってことだけど。
チェッカーそのものだけだったら、他の実装やWEBサービスで我慢するってのもありかもしれないけど、「正規表現をC/C++の文字列リテラルにしたい」(要するに、"\d+\t\d+"を"\\d+\\t\\d+"のようするのが面倒)ってのが出発点だから、やっぱり、自分でやるしかないかも。
20:30 追記:
RichEditのフォントの件は、デュアルフォントモードを無効にすれば回避できる
// デュアルフォントモードを無効にする
DWORD dwLangOptions = SendMessage(RichEdit1->Handle, EM_GETLANGOPTIONS, 0, 0);
dwLangOptions &= ~IMF_DUALFONT;
SendMessage(RichEdit1->Handle, EM_SETLANGOPTIONS, 0, (LPARAM)dwLangOptions);
与太話:正規表現チェッカーでの結果表示部分の実装 More ログイン