アイテムの編集で・・・ – プログラミング – Home

アイテムの編集で・・・
 
通知
すべてクリア

[解決済] アイテムの編集で・・・


ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

--環境--
WinXP
VC6.0
MFC

--------

レポートタイプのリストビュー上で
1行をダブルクリックして、リストビューのアイテムを編集したいと考えています。

GetSelectionMark()を使って、ダブルクリックして選択された行数は
取得できたのですが、その後、リストビューにあるアイテムを
どうやってEditボックスに値を渡せばいいのかが分かりません。

現状のやり方は
nItem = m_LvData.GetSelectionMark();
で選択行番号を取得して、
CEdit* pedit = m_LvData.EditLabel(nItem);
といった感じにやっていますが、
EditLabelする前に、GetEditControl()を使って
Editボックスのオブジェクトを取得しないといけないのでしょうか?

Editボックスは、ダイアログ上の既存のm_edit1という
リストビューに入力するためのメンバ変数として
使っているものを使います。


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

書いている意味がいまひとつ分からないのですけれど、
やり方そのものが間違っていると言う事はないですか?
CListCtrl::EditLabelはリストコントロール上でインライン編集を
したいと気に使うものだと思います。
この場合、リストコントロールのスタイルにLVS_EDITLABELSが設定されていて
CListCtrl::EditLabelを呼べば、自動的にエディットボックスが表示されるはずです。
あとは、LVN_ENDLABELEDITを受けて編集内容を取り込めばOKです。
但し、アイテムテキストしか対象にならないのでサブアイテムも直接編集したいなら
自分ですべて実装する必要があります。
この場合は、LVS_EDITLABELSもいらないし、CListCtrl::EditLabelを使う必要も
ないと思います。

もし、別の位置にあるエディットボックスで編集したいのであれば、
単純にダブルクリックされたアイテムのTextを取得して
そのエディットボックスに設定すればいいと思います。
この場合も自前で実装する時と同じで
LVS_EDITLABELSもいらないし、CListCtrl::EditLabelを使う必要もないと思います。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

誤字訂正。

誤)
したいと気に使うものだと思います。

正)
したい時に使うものだと思います。


返信引用
ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

>PATIOさん

ありがとうございます!
私がEditLabelの使い方を誤解していたようです。
理解できました。

>もし、別の位置にあるエディットボックスで編集したいのであれば、
>単純にダブルクリックされたアイテムのTextを取得して
>そのエディットボックスに設定すればいいと思います。

リストビューのアイテムをエディットボックスに
設定(コピー)する方法でやってみようと思います。
そこから、編集されたデータを、再びリストビューに
設定することでやってみようと思います。


返信引用
ponta
 ponta
(@ponta)
ゲスト
結合: 19年前
投稿: 15
Topic starter  

SetWindowTextで解決しました!
ありがとうございました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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