|
|
|
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
| |
|
2015/5/18(Mon) 18:20:49|NO.69271
resizeobjを使うことで可能です。
|
|
2015/5/18(Mon) 19:44:59|NO.69272
>>スペースさん
回答有難うございます。
resizeobjなのですがこちらの環境だとヘルプのサンプルを実行しても
resizeobjが上手く動かないようなのでAPIでなんとか出来ないでしょうか?
|
|
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.が出て使えませんでした。
|
|
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.は
どのようにして対処すればいいものなのでしょうか?
|
|
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が出てしまいます
|
|
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以外の名前に変えた所無事意図したとおりに動くようになりました。
ありがとうございました!
|
|
2015/5/19(Tue) 09:50:40|NO.69290
llmod3.hspを別のモジュールと勘違いしていました。
混乱と手間をかけさせてすみません・・・
|
|
2015/5/19(Tue) 18:03:08|NO.69294
なんか僕の環境では横方向のみサイズを変更したときに
リストビューのサイズが変わらないようです
win7で、4GBです。
あと、みなさんの掲示しているプログラムはエディタから実行する際に
エラーが発生します。
正確にはプログラムをどこにも保存していないときにです。
そういうときは、2つのヘッダーはllmod3\\〜というふうにする必要があります。
|
|
2015/5/19(Tue) 23:25:32|NO.69299
>なんか僕の環境では横方向のみサイズを変更したときに
>リストビューのサイズが変わらないようです
縦のサイズ変化しか監視してませんからそれは当然そうです。
あくまでサンプルですからその辺は放置してます。
>2つのヘッダーはllmod3\\〜というふうにする必要があります
おっしゃる通りです。
よく確認せずに投稿してたみたいです。
|
|