HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0211
今地区所リストビューでエクスプローラーの「名前の変更」と同じ動きをさせたい7解決


今地区所

リンク

2013/2/11(Mon) 23:28:06|NO.52318

リストビューでエクスプローラーの「名前の変更」と同じようにアイテムの文字列を
編集したいと思っています。
自分なりに調べたらC#ではLabelEditプロパティをTrueにすると出来るらしいです。
HSPではどのように実装したらいいのでしょうか。
だれか教えてください。



この記事に返信する


玄冬

リンク

2013/2/11(Mon) 23:52:13|NO.52320

単にファイルの名前を変更したいということでよろしいでしょうか?

[1]dirlistでファイル名の一覧を取得
[2]inputなどで新たなファイル名を入力するフォームを作る
[3]bcopyで旧ファイルの中身を新ファイル名でコピーする
[4]deleteで旧ファイルを消す

とすれば標準命令だけで実装可能かと思われます。

標準添付のhspextプラグインのfxrenを使えば、もっと簡単に実装できそうですね。



今地区所

リンク

2013/2/12(Tue) 00:02:38|NO.52322

>単にファイルの名前を変更したいということでよろしいでしょうか?
そうではなく、リストビューにアイテムを追加した後、
Windowsのエクスプローラーみたいに視覚的にアイテムの文字列を編集したいと思っています。



今地区所

リンク

2013/2/12(Tue) 00:12:07|NO.52323

すみません自己解決しました。
リストビュー特有のスタイルにLVS_EDITLABELSを指定すればいいだけでした。

以下やりたかったこと

#include "llmod3/llmod3.hsp" #include "llmod3/img.hsp" #include "llmod3/listview.hsp" #define LVS_EDITABLES 0x0200 listview 300,400,LVS_EDITABLES filename="shell32.dll" get_icon icons.0,"shell32.dll",3,0 get_icon icons.1,"shell32.dll",4,0 listicon icons,2,0 //追加 repeat 20 listadd cnt,"フォルダ"+cnt,0,0,0,cnt loop



今地区所

リンク

2013/2/12(Tue) 00:13:17|NO.52324





HT.

リンク

2013/2/12(Tue) 00:20:09|NO.52326

それだけだと編集の完了はできませんよ。取得〜変更の流れは自分でやる必要があります。

選択中のアイテムをクリックして編集状態にするとWM_NOTIFYのlParam(LV_DISPINFO構造体)を通してLVN_BEGINLABELEDITメッセージが送られてくるので
このタイミングでLVM_GETEDITCONTROLメッセージをsendmsgしてコントロールのハンドルを取得します。
やがて名前変更が確定されると同じようにLVN_ENDLABELEDITメッセージが送られてくるので
lParamのLV_DISPINFO構造体に含まれるLVITEM構造体のszTextメンバ部分を取得して
LVM_SETITEMTEXTメッセージの引数に指定し送信して変更完了…という手順になります。
メンバのインデックスについては省略。



fortunehill

リンク

2013/2/12(Tue) 00:33:12|NO.52327

/*ご参考*/

winobj "SysListView32","",$200,$50000201,200,200 :hh = objinfo(stat,2) ss = "title" :nn = $0F,0 ,100,varptr(ss),0,0 :sendmsg hh,$101B,0,varptr(nn) ss = "aaaaa" :nn = $01,0,0,0,0,varptr(ss) :sendmsg hh,$1007,0,varptr(nn) oncmd gosub *label,$4E stop *label dupptr ii,lparam,12 if (ii(0) == hh) { if (ii(2) == -106) {dupptr jj,lparam,64 :sendmsg hh,$1006,0,varptr(jj)+12}} return /* #define LVM_INSERTCOLUMNA $101B #define LVM_INSERTITEMA $1007 #define LVM_SETITEMA $1006 */



今地区所

リンク

2013/2/12(Tue) 01:20:09|NO.52330

>それだけだと編集の完了はできませんよ。取得〜変更の流れは自分でやる必要があります。
ちょっと早とちりしてしまいました。そのとおりです。
>lParamのLV_DISPINFO構造体に含まれるLVITEM構造体のszTextメンバ部分を取得して...
GetWindowTextを使おうとしてました。Sendmsgでもいけるんですね。

玄冬さん、HT.さん、fortunehillさんご回答ありがとうございました。
何とかなりそうです。



ONION software Copyright 1997-2023(c) All rights reserved.