リストコントロールにタブ文字を表示するには? – プログラミング – Home

リストコントロールにタブ文字を表示する...
 
通知
すべてクリア

リストコントロールにタブ文字を表示するには?


Telfair
 Telfair
(@Telfair)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

VC++ 6.0 SP5 MFC

リストコントロールにタブ文字が表示されません。
---------------------------------------------

リストコントロールに対して
CListCtrl::InsertItem()でアイテムを登録しています。

アイテムの文字列の中にタブ文字が含まれる場合、
そのタブ文字だけがリストに表示されません。
(タブ文字の位置が先頭・中間・末尾に関わらず表示されません)
トリムされているのではなく内部的には保持しているようです。

たとえば
CString value = tab->\t<-tab;
LV_ITEM listitem;
listitem.pszText = value.GetBuffer( value.GetLength() );
InsertItem(&listitem);
として、実際にリストコントロールを表示すると
tab-><-tab
と表示されます。

タブ文字を表示させる方法をご存じでしょうか。
もしくはCListCtrlの仕様上、表示させることは出来ないものなのでしょうか。
※簡単な方法で無理なら表示できなくても構わないので、
 パワフルなテクニックは不要です。


引用解決済
トピックタグ
maru
 maru
(@maru)
ゲスト
結合: 18年前
投稿: 358
 

> タブ文字が表示されません。
そもそも、タブ文字(?)って表示されるもの?
という突っ込みは置いといて。

リストコントロールではTABに対応していなかったのでは?(自信なし)
表のように位置を合わせるのであれば、レポートビュースタイル(LVS_REPORT)
にしてカラムを使うほうが一般的ではないかな。


返信引用
Telfair
 Telfair
(@Telfair)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

maruさん
さっそくのコメントありがとうございます。

> そもそも、タブ文字(?)って表示されるもの?

上記、エディットボックスの場合だと
 tab-> <-tab
というようにタブ文字も表示されるんです。
なので他のコントロールでも表示されるのかと思ったのですが
リストコントロールではダメでした。
半角・全角スペースは使えるのに
わざわざタブ文字だけが除外されて表示されます。

> 表のように位置を合わせるのであれば

意図したものではなく、例外パターンなんです。
プログラムのつくりとしては
 エディットボックスの入力値がリストコントロールに登録され、
 登録済みのリストコントロールを選択すると
 その値がまたエディットボックスに代入される
ような感じになっています。

エディットボックスへは直接タブ文字の入力は出来ないんですが
メモ帳からのコピペなどでは出来てしまうんです。


返信引用
maru
 maru
(@maru)
ゲスト
結合: 18年前
投稿: 358
 

TAB文字(\t)は次のTAB位置まで進めるものであって、表示されるものではないって
言いたいんだけど。

で、リストコントロールにこの次のTAB位置まで進める機能がない。またはTAB位置が
定義されていないんだと思う。
無理やりやるんなら、自分で描画ルーチンを作ってCDC::TabbedTextOut当たりを使う
のかな。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました