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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0518
ニボッシーSysListView32を使って作成したListViewのサイズ変更13解決


ニボッシー

リンク

2015/5/18(Mon) 18:10:50|NO.69270

SysListView32を使って作成したリストビューなのですが
これをウィンドウサイズを変更してリストビューのサイズより小さい場合、
マウススクロールをしても一番下までいかないため
ウィンドウサイズが変更されたらリストビューのサイズを変更して対応するようにしたいです。

質問
一度作成したリストビューのサイズを後から変更をしたいのですがどうすればいいでしょうか?



gsel 0,-1 windowx=300 : windowy=ginfo_dispy screen 2,ginfo_dispx,ginfo_dispy,1,0,0,windowx,230 title "リストビューテスト" ;リストビュー作成 winobj "SysListView32", "", 0x00000200, 0x50000001, windowx, windowy : ListViewID=stat hList = objinfo(stat, 2) sendmsg hList, $1036, , $20 szText = "番号" LVCOLUMN = 0x000F, 0, 100, varptr(szText), 0, 0 sendmsg hList, 0x101B, 0, varptr(LVCOLUMN) szText = "名前" LVCOLUMN = 0x000F, 0, 100, varptr(szText), 0, 1 sendmsg hList, 0x101B, 1, varptr(LVCOLUMN) repeat 9,0 wait 2 pszText = ""+(cnt+1) LVITEM = 0x0001, cnt, 0, 0, 0, varptr(pszText) sendmsg hList, 0x1007, 0, varptr(LVITEM) pszText = "名前0"+(cnt+1) LVITEM = 0x0001, cnt, 1, 0, 0, varptr(pszText) sendmsg hList, 0x1006, 0, varptr(LVITEM) loop beforewindowy=ginfo(13) ;待機ループ repeat wait 5 currentwindowy=ginfo(13) if beforewindowy!currentwindowy : beforewindowy=currentwindowy : dialog "currentwindowyが変更されました" loop



この記事に返信する


スペース(HSP歴3年)

リンク

2015/5/18(Mon) 18:20:49|NO.69271

resizeobjを使うことで可能です。



ニボッシー

リンク

2015/5/18(Mon) 19:44:59|NO.69272

>>スペースさん
回答有難うございます。
resizeobjなのですがこちらの環境だとヘルプのサンプルを実行しても
resizeobjが上手く動かないようなのでAPIでなんとか出来ないでしょうか?



nora

リンク

2015/5/18(Mon) 20:40:50|NO.69274

普通に動きますが

#include "llmod3.hsp" #include "obj.hsp" gsel 0,-1 windowx=300 : windowy=ginfo_dispy screen 2,ginfo_dispx,ginfo_dispy,1,0,0,windowx,230 title "リストビューテスト" ;リストビュー作成 winobj "SysListView32", "", 0x00000200, 0x50000001, windowx, windowy : ListViewID=stat hList = objinfo(stat, 2) sendmsg hList, $1036, , $20 szText = "番号" LVCOLUMN = 0x000F, 0, 100, varptr(szText), 0, 0 sendmsg hList, 0x101B, 0, varptr(LVCOLUMN) szText = "名前" LVCOLUMN = 0x000F, 0, 100, varptr(szText), 0, 1 sendmsg hList, 0x101B, 1, varptr(LVCOLUMN) repeat 9,0 wait 2 pszText = ""+(cnt+1) LVITEM = 0x0001, cnt, 0, 0, 0, varptr(pszText) sendmsg hList, 0x1007, 0, varptr(LVITEM) pszText = "名前0"+(cnt+1) LVITEM = 0x0001, cnt, 1, 0, 0, varptr(pszText) sendmsg hList, 0x1006, 0, varptr(LVITEM) loop beforewindowy=ginfo(13) ;待機ループ repeat wait 5 currentwindowy=ginfo(13) if beforewindowy!currentwindowy : beforewindowy=currentwindowy : r=ginfo_winx,ginfo_winy,0,0:resizeobj ListViewID ,r loop



ニボッシー

リンク

2015/5/18(Mon) 20:55:33|NO.69275

>>noraさん
回答有難うございます。
obj.hspもインクルードしないといけなかったんですね。
そのソースでは動くのですが実際に組み込もうと思っているソースは、
いろんなモジュールを使っておりllmod3をインクルードすると、
#Fatal error reported.が出て使えませんでした。



スペース(HSP歴3年)

リンク

2015/5/18(Mon) 21:17:45|NO.69276

llmod3とはリストビューを使いやすくするためのモジュールなので、
ニボッシーさんのスクリプトにインクルードする必要はないと思います。



ニボッシー

リンク

2015/5/18(Mon) 23:05:58|NO.69282

>>スペースさん
llmodとobjインクルードするとllmodで#Fatal error reported.
objのみインクルードすると
obj.hsp(142) : error 2 : 文法が間違っています (142行目)
該当行(142行目) _hspobjhandle _v1
となってしまいます。

色々なモジュールを使っていて組み合わせによってよく出る#Fatal error reported.は
どのようにして対処すればいいものなのでしょうか?



スペース(HSP歴3年)

リンク

2015/5/18(Mon) 23:45:32|NO.69283

>ニボッシーさん
すみません、こちらではそのエラーを再現できません。
そのエラーが発生する必要最低限のスクリプトを書いていただけないでしょうか?
resizeobjはobj.hspだけで動くはずなのですが・・・



ニボッシー

リンク

2015/5/19(Tue) 00:15:24|NO.69284

>>スペースさん
ソースの同フォルダにobj.hspを置いてやっていますが
やはりobj.hspの142行目でエラーが出てしまいます。


#include "obj.hsp" stop

ただllmodインクルードするとfatal errorは出ません↓


#include "llmod3.hsp" #include "obj.hsp" stop

組み込もうと思っているソースでllmod3をインクルードすると
llmod3の66行目
#func global LoadLibrary "LoadLibraryA" str
で#Error:symbol in use in line 66が出てしまいます



nora

リンク

2015/5/19(Tue) 02:19:32|NO.69287

これでいいですか

#uselib "user32.dll" #func MoveWindow "MoveWindow" int,int,int,int,int,int gsel 0,-1 windowx=300 : windowy=ginfo_dispy screen 2,ginfo_dispx,ginfo_dispy,1,0,0,windowx,230 title "リストビューテスト" ;リストビュー作成 winobj "SysListView32", "", 0x00000200, 0x50000001, windowx, windowy : ListViewID=stat hList = objinfo(stat, 2) sendmsg hList, $1036, , $20 szText = "番号" LVCOLUMN = 0x000F, 0, 100, varptr(szText), 0, 0 sendmsg hList, 0x101B, 0, varptr(LVCOLUMN) szText = "名前" LVCOLUMN = 0x000F, 0, 100, varptr(szText), 0, 1 sendmsg hList, 0x101B, 1, varptr(LVCOLUMN) repeat 9,0 wait 2 pszText = ""+(cnt+1) LVITEM = 0x0001, cnt, 0, 0, 0, varptr(pszText) sendmsg hList, 0x1007, 0, varptr(LVITEM) pszText = "名前0"+(cnt+1) LVITEM = 0x0001, cnt, 1, 0, 0, varptr(pszText) sendmsg hList, 0x1006, 0, varptr(LVITEM) loop beforewindowy=ginfo(13) ;待機ループ repeat wait 5 currentwindowy=ginfo(13) if beforewindowy!currentwindowy : beforewindowy=currentwindowy : MoveWindow hList,0,0,ginfo_winx,ginfo_winy,1 loop

LoadLibrary

>resizeobjはobj.hspだけで動くはずなのですが・
obj.hspはllmod3.hspを最初にincludeしてないと動きません。



ニボッシー

リンク

2015/5/19(Tue) 03:12:09|NO.69289

>>noraさん
回答有難うございます。
実際に組み込もうと思っているソースに導入する時func命令でエラーが出ていましたが
命令のヘルプを読んでみて#Error:symbol in use in lineの意味が分かり
どうやら他のモジュールで同じ名称で登録されているのが原因でした

MoveWindow以外の名前に変えた所無事意図したとおりに動くようになりました。
ありがとうございました!



スペース(HSP歴3年)

リンク

2015/5/19(Tue) 09:50:40|NO.69290

llmod3.hspを別のモジュールと勘違いしていました。
混乱と手間をかけさせてすみません・・・



kanamaru

リンク

2015/5/19(Tue) 18:03:08|NO.69294

なんか僕の環境では横方向のみサイズを変更したときに
リストビューのサイズが変わらないようです
win7で、4GBです。
あと、みなさんの掲示しているプログラムはエディタから実行する際に
エラーが発生します。
正確にはプログラムをどこにも保存していないときにです。
そういうときは、2つのヘッダーはllmod3\\〜というふうにする必要があります。



nora

リンク

2015/5/19(Tue) 23:25:32|NO.69299

>なんか僕の環境では横方向のみサイズを変更したときに
>リストビューのサイズが変わらないようです
縦のサイズ変化しか監視してませんからそれは当然そうです。
あくまでサンプルですからその辺は放置してます。

>2つのヘッダーはllmod3\\〜というふうにする必要があります
おっしゃる通りです。
よく確認せずに投稿してたみたいです。



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