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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0907
nakamasaテキストボックス内の行間の広げ方が分からない4解決


nakamasa

リンク

2013/9/7(Sat) 15:07:19|NO.56956

お世話になります。
ツールの中で Mesbox 命令を使って複数テキストボックスを表示し、テキストを書き込むことができるようにしているのですが、テキストボックス内の文字の行間を、少し広めにしたいと考えています。
例えば以下のようなプログラムがあって、テキストボックスの中に3行で「アイウエオ」「サシスセソ」「ラリルレロ」と表示されるとします。

1.この「アイウエオ」「サシスセソ」「ラリルレロ」の行間の広げ方(広げる為にどのようなプログラムを組めばよいのか)を教えて頂けますでしょうか。
2.行間変更ボタンを押すなどしてユーザーが途中で行間の高さを変更できるようにする方法(途中段階での行間の変更にはどのようなプログラムを組めばよいか)などを教えて頂けますでしょうか?

宜しくお願い致します。

----- プログラム例 -----
sdim aaa

aaa="アイウエオ\nサシスセソ\nラリルレロ"

objmode 2
objsize 200,200
mesbox aaa
stop



この記事に返信する


fortunehill

リンク

2013/9/7(Sat) 16:32:24|NO.56961

/*ご参考(EditBoxでは不可能なのでRichEditで構造体もPARAFORMAT2を使用)*/

#include "user32.as" #include "kernel32.as" LoadLibraryA "RICHED32.DLL" winobj "RICHEDIT","",$200,$50200044,200,200,0,0 hh = objinfo(0,2) dim pf1,15 ;文字書式の設定(PARAFORMAT) pf1( 0) = 60 ;構造体サイズ(15*4) pf1( 1) = 0xA8000000 ;CFM_CHARSET | CFM_FACE | CFM_SIZE pf1( 3) = 12 * 20 ;12 ポイント(twip(1/20point)単位で指定) poke pf1,24,128 ;SHIFTJIS_CHARSET poke pf1,26,"MS ゴシック" ;フォント名 sendmsg hh ,$444,0,varptr(pf1) ;EM_SETCHARFORMAT ;段落書式の設定 nn( 0) = 5 ;(bLineSpacingRule ) ;0 : 通常 ;1 : 1.5 倍 ;2 : 2.0 倍 ;3 : dyLineSpacingでtwip単位で指定(行分より小さい時は0) ;4 : dyLineSpacingでtwip単位で指定 ;5 : dyLineSpacing/20 で行単位で指定 nn( 1) = 60 ;(dyLineSpacing) dim pf2,47 ;文字書式の設定(PARAFORMAT2) pf2(0) = 188 ;構造体サイズ(47*4) pf2(1) = $100 ;PFM_LINESPACING pf2(41) = nn( 1) poke pf2,170,nn(0) sendmsg hh ,$447,0,varptr(pf2) ;EM_SETPARAFORMAT ss = "アイウエオ\nサシスセソ\nラリルレロ\n" sendmsg hh,$C,0,varptr(ss) gsel 0,-1 :gsel 0,1 stop



nakamasa

リンク

2013/9/7(Sat) 20:34:10|NO.56979

ありがとうございます。
HSP では Mesbox 命令を使って作成したテキストボックスでの行間の設定は難しいのですね?
Windows API の知識がないと winobj の利用はできないと他のサイトで書かれていましたが、けっこうハイレベルなんですね。
他にも何か方法はありますでしょうか?



fortunehill

リンク

2013/9/8(Sun) 00:26:30|NO.56988

/*蛇足(標準+APIで思いつく行間が弄れる物)*/

#include "user32.as" :ss = "AAA\nBBB\nCCC\n" bgscr 1,100,182,,2,2 :hh = hwnd objsize ,,30 ;Y方向の最低確保行サイズ mes ss gsel :SetParent hh,hwnd boxf objsize 100,100 objmode 3 pos 104,1 :listbox ii,,ss pos 206,1 :combox jj,130,ss await ;必須 sendmsg objinfo(0,2),$1A0,0,30 :RedrawWindow objinfo(0,2),0,0,$401 ;LB_SETITEMHEIGHT sendmsg objinfo(1,2),$153,0,30 :RedrawWindow objinfo(1,2),0,0,$401 ;CB_SETITEMHEIGHT



nakamasa

リンク

2013/9/8(Sun) 20:08:57|NO.57016

ありがとうございます。
参考になりました。

因みに、リストボックスは行間が変えられるんですね。

また分からない部分がありましたら質問をさせて頂きます。
その際は宜しくお願い致します。



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