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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0604
メロンパンリストボックスのサイズ6解決


メロンパン

リンク

2010/6/4(Fri) 11:27:23|NO.32987

リストボックスのサイズは、
フォントのサイズ等によってスナップ(?)されるようですが、
これだと、ウィンドウサイズに合わせてオブジェクトの比率を変更などした場合、
リストボックスの高さだけがずれて、レイアウトがきれいに決まりません。

皆さんはどうしていますか?
リストボックスのサイズのスナップする基準がわかれば、
周りに均等な余白をつける等もできると思いますが…
できれば文字が途中で切れても、サイズを優先するリストボックスを選べるようにして欲しいです><



この記事に返信する


メロンパン

リンク

2010/6/4(Fri) 11:28:52|NO.32988

丁度いい例があったので勝手に張りますが
http://kazuki.wankuma.com/images/2008/04/WPFC.NETFramework3.5SP1ListBox_13E7F/image.png
こんな風にしたいです。



KA

リンク

2010/6/4(Fri) 19:35:26|NO.32995

同じ現象に悩んだ人からの返事は期待できますが、こういう場合は
そのスクリプトを貼り付けて(最小限に留めて)はどうでしょうか?

単純なミスが分かったりもします。



SYAM

リンク

2010/6/4(Fri) 21:42:57|NO.33000

ミスっつーか普通にやってもできませんね、これ・・・。
ウィンドウにメッセージ送ってもやっぱりスナップされるし。



Kpan

リンク

2010/6/4(Fri) 22:49:44|NO.33002

winobj命令でリストボックスを用意してください。
で、ウィンドスタイルにLBS_NOINTEGRALHEIGHTを指定します。



あり

リンク

2010/6/5(Sat) 10:41:26|NO.33018

Kpanさんが言われている様に
リストボックスのウィンドウスタイルにLBS_NOINTEGRALHEIGHTを
追加すればサイズ優先のリストボックスが使えると思ったのですが
作成後ではスタイル変更が上手く出来ない様なので自作してみました。
直接的なスタイル変更手段があるのなら誰か教えてください(汗)

; サイズ優先のリストボックス #module #include "user32.as" #define GWL_STYLE $FFFFFFF0 #define LBS_NOINTEGRALHEIGHT $00000100 #define LB_ADDSTRING $00000180 #define LB_GETCURSEL $00000188 #define LB_SETCURSEL $00000186 #define LB_RESETCONTENT $00000184 #define WS_CHILD $40000000 #define WS_VISIBLE $10000000 #define WS_VSCROLL $00200000 #define WS_EX_CLIENTEDGE $00000200 #define WM_SETFONT $00000030 #define WM_SETREDRAW $0000000B #deffunc LB_Add int _ID , var _Text notesel _Text sendmsg lb_hwnd(_ID) , WM_SETREDRAW , 0 , 0 repeat notemax noteget dat , cnt sendmsg lb_hwnd(_ID) , LB_ADDSTRING , 0 , varptr(dat) loop sendmsg lb_hwnd(_ID) , WM_SETREDRAW , 1 , 0 noteunsel return ;-----------------------------------------------; ; ListBoxEx p1, p2, p3, p4 ; ; p1=最初に選択するインデックス ; ; p2,p3=リストボックスのXYサイズ ; ; p4=リストボックスの内容を示す文字列 ; ; statにオブジェクトIDが返る ; ;-----------------------------------------------; #deffunc ListBoxEx int _index , int _xsize , int _ysize , var _Text mref BMSCR , 67 sysfont 17 : font_hwnd = BMSCR(38) ;HSPオブジェクト用のフォントハンドル ; oncmdを使ったメッセージ処理を行いたいならwin_styleにLBS_NOTIFY($1)を追加して下さい win_style = WS_CHILD|WS_VISIBLE|WS_VSCROLL|LBS_NOINTEGRALHEIGHT winobj "ListBox" , "" , WS_EX_CLIENTEDGE , win_style , _xsize , _ysize , 0 , 0 lb_ID = stat lb_hwnd(lb_ID) = objinfo(lb_ID , 2) sendmsg lb_hwnd(lb_ID) , WM_SETFONT , BMSCR(38) , 0 LB_Add lb_ID , _Text sendmsg lb_hwnd(lb_ID) , LB_SETCURSEL , _index , 0 return lb_ID ;-----------------------------------------------; ; LB_SetText p1, p2 ; ; p1=オブジェクトID ; ; p2=変更する内容の入った文字列 ; ;-----------------------------------------------; #deffunc LB_SetText int _ID , var _Text sendmsg lb_hwnd(_ID) , LB_RESETCONTENT , 0 , 0 LB_Add _ID , _Text return ;-----------------------------------------------; ; val = LB_GetIndex(p1) ; ; p1=オブジェクトID ; ;-----------------------------------------------; #defcfunc LB_GetIndex int _ID sendmsg lb_hwnd(_ID) , LB_GETCURSEL , 0 , 0 ref = stat if ref = -1 : ref = 0 return ref #global ;---------- サンプル ---------- #include "obj.as" buf = "00\n01\n02\n03\n04\n05\n06\n07\n08\n09" notesel buf button gosub "change" , *change mes "オリジナル" objsize 200 , 68 listbox a , 0 , buf : id1 = stat mes "拡張リストボックス" ListBoxEx 0 , 200 , 68 , buf ;リストボックス作成 id2 = stat repeat ; LB_GetIndex()で選択しているインデックスを取得 ; (存在しないIDを指定するとエラー) title "選択中 = "+a+" "+LB_GetIndex(id2) wait 10 loop stop *change color 255 , 255 , 255 : boxf sysfont 0 color 0 : pos 0 , 24 mes "左=オリジナル" mes "右=拡張リストボックス" size1 = 200 , 480 , 240 , 0 resizeobj id1 , size1 , 0 size2 = 200 , 480 , 440 , 0 resizeobj id2 , size2 , 0 buf2 = "" repeat 50 buf2 = buf2 + strf("%04d" , cnt) + "\n" loop objprm id1 , buf2 LB_SetText id2 , buf2 ;objprmと同じ使い方 return
容量削減の為、多少オリジナルと違う挙動になっていますが
(内容変更後の選択位置が違う、リストボックス作成後にsysfont 17が適用されている等)
基本的にはlistboxと同じ使い方が出来ると思います。



メロンパン

リンク

2010/6/5(Sat) 11:42:39|NO.33020

おお…ちゃんと何を選択しているか取得できる…
LBS_NOINTEGRALHEIGHTだけだと、
パラメータの取得とかができなくなって…みたいなのがあったんですよ…。
内容は、よく読めばなんとか理解できる範囲なので、ありがたく使わせていただきます!
とは言っても、やはりHSP標準で欲しいですよね。今後のバージョンにちょっと期待します。
とにかく、本当にありがとうございました!!愛してますよ〜♪



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