〜 オブジェクト 〜
配置後に読取属性を操作

mesboxは配置する時に書換可能モードか書換不可モードかを選択することができます。
HSP2はobjsend命令、HSP3はsendmsg命令でオブジェクトにメッセージを送信すれば変更できるので、
対象エディットボックスに「EM_SETREADONLY(=0x00CF)」を送り、読取専用属性を付け外ししてみましょう。

HSP2「objsend オブジェクトID, 0x00CF, 書換可能(=0) or 書換不可(=1), 不使用変数(=0), 0」 HSP3「sendmsg オブジェクトハンドル, 0x00CF, 書換可能(=0) or 書換不可(=1), 不使用(=0)

尚、エディットボックスというのはmesbox命令だけでなく、input命令の単一行ボックスも該当しており、 input命令では配置時に書換モードを指定できませんが、このモジュール命令ならば指定することが可能です。

editpermition オブジェクトID, 書換モード
オブジェクトID対象となるオブジェクトIDを指定する。
書換モード編集できる(=0)か、編集できない(=1)かを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#module
#deffunc editpermition int, int
	mref id, 0 : mref permit, 1
	mref bmscr, 67
	objsend id, 0x00CF, permit, nonuse
	return
#global

	sdim data, 64, 2
	sdim edit,  8, 2
	data = "書換可否テスト", "書き換えの\n可否チェック\nをテストしてみる"
	edit = "可能", "不可"
	pmt = 0, 1
	pos  10, 10 : input data.0, 200, 25
	pos  10, 80 : mesbox data.1, 160, 80
	pos 250, 10 : i = pmt.0 : button edit.i, *ctrl
	pos 250, 80 : i = pmt.1 : button edit.i, *ctrl
	gosub *permition
	stop

*ctrl
	i = stat - 2
	pmt.i = 1 - pmt.i
	i = pmt.i
	objprm stat, edit.i
	gosub *permition
	stop

*permition
	editpermition 0, pmt.0
	editpermition 1, pmt.1
	return

editpermition オブジェクトID, 書換モード
オブジェクトID対象となるオブジェクトIDを指定する。
書換モード編集できる(=0)か、編集できない(=1)かを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#module
#deffunc editpermition int id, int permit, local i
	if id < 1000 : i = objinfo(id, 2) : else : i = id
	sendmsg i, 0x00CF, permit
	return
#global

	sdim data, 64, 2
	data = "書換可否テスト", "書き換えの\n可否チェック\nをテストしてみる"
	edit = "可能", "不可"
	pmt = 0, 1
	pos  10, 10 : input data.0, 200, 25
	pos  10, 80 : mesbox data.1, 160, 80
	pos 250, 10 : button gosub edit(pmt.0), *ctrl
	pos 250, 80 : button gosub edit(pmt.1), *ctrl
	gosub *permition
	stop

*ctrl
	pmt(stat - 2) = 1 - pmt(stat - 2)
	objprm stat, edit(pmt(stat - 2))
	gosub *permition
	return

*permition
	editpermition 0, pmt.0
	editpermition 1, pmt.1
	return