リストコントロールのアイテム情報更新 – プログラミング – Home

リストコントロールのアイテム情報更新
 
通知
すべてクリア

リストコントロールのアイテム情報更新


りもん
 りもん
(@りもん)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

お世話になってます、環境はWinXP VC7 MFC Doc/View です。

リソースでダイアログを作成し、そこにリストコントロールを配置して
幾つかのアイテムを登録してレポート表示しているのですが
アイテムの状態(例えばサイズや更新日時など)がダイアログと無関係な
場所で更新された場合、それをリストコントロールに反映するには
どうすればよいのでしょうか?

今のところDeleteAllItems();で一度登録してあるアイテムを削除した後
再度更新されたアイテムを登録しなおしているのですが
消去した瞬間空白になりちらついたり、処理的にも負担が大きい気がします。
また、リストコントロールをスクロールさせている場合、
スクロール状態もリセットされてしまいます

ダイアログはモードレスです。

リストコントロールのアイテムの情報は
item.pszText=pDoc->item1.size;
という感じで、ドキュメントを直接参照しています

よろしくおねがいします。


引用解決済
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

リストコントロールに表示されている内容を変更したい
ということでしょうか?

CListCtrl::SetItemText()で文字列を変更できます。
それ以外の属性を変更したい場合は、CListCtrl::SetItem()です。


返信引用
りもん
 りもん
(@りもん)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

ありがとうございます。

SetItemText()を使うとできました、
InsertとSetの違いがよく分かっていなかったみたいです。

もう一つお尋ねしたいのですが、設定されているコラムやアイテムの名前は
変更できたのですが左寄やコラムのcxを後で変更するにはどうすればよいのでしょうか?

// リストコントロール初期設定----------A
void CTestDlg::SetLC(void)
{
//コラムの雛形作成
LVCOLUMN column;
column.mask=LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;//フォー
マット設定
column.fmt=LVCFMT_RIGHT;//フォーマット設定
for(int i=0;i<=10;i++)
{
column.cx=50;
column.pszText=NULL;
lc.InsertColumn(i,&column);
}
}
//ダイアログのボタンを押したときにコラムの内容を変更----------B
void CTestDlg::OnBnClickedButton1
{
/////コラムの情報更新
LVCOLUMN column;
column.pszText=名前;
column.cx=8;//-----------------C
lc.SetColumn(0,&column);
column.pszText=身長;
column.cx=6;//----------------C
lc.SetColumn(1,&column);
column.pszText=血液型;
column.fmt=LVCFMT_LEFT;//--------D
column.cx=6;//---------------C
lc.SetColumn(2,&column);
}
Aでリストコントロールの内容を仮設定してBで実装していますが
CのCXとDのフォーマットの設定が反映されません

よろしくお願いします。

あと最後に、使っていないコラムやアイテムがあると無駄に空欄ができるのでを非表示に
したいのですが
可能なのでしょうか?削除してしまうと使いたいときに作成しなおさなくてはならないの

非表示がいいと思うのですが

WinXP VC7 MFC Doc/View


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

CListCtrl::SetColumn()に渡すLVCOLUMN 構造体ですが、
maskというメンバに何も設定していないようですね。
列を追加するときとは別に、変更するときにも
「何を変更するのか」をmaskに指定してあげる必要があります。


返信引用
りもん
 りもん
(@りもん)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

ありがとうございます。
maskを指定するとできました。

>使っていないコラムやアイテムがあると無駄に空欄ができるので非表示にしたいのです
が、
>可能なのでしょうか?削除してしまうと使いたいときに作成しなおさなくてはならない
ので
>非表示がいいと思うのですが。

こちらの方はよい方法ないでしょうか?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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