HSP命令講座 <chkbox命令>

Last Update : 2008/06/xx

PR HSPの書籍 『逆引き HSP3プログラミング事典 応用編』

chkbox命令 (チェックボックス) の基礎

HSPのチェックボックスオブジェクト (クラシックスタイル) チェックボックスオブジェクトの設置です。命令名の由来は、「check box」から。

 オブジェクト左側に口項目のチェック欄があり、マウスクリックかフォーカスがあればスペースキーで、レ点マークを入れたり外したりできます。その隣に表示してある文字列に対して、有効(オン) or 無効(オフ)をユーザに選択をさせるような機能になります。

 chkbox "表示文字列", 状態保持変数

 chkbox命令を呼び出した直後のシステム変数statには、チェックボックスのオブジェクトIDが返ります。オブジェクトIDは、オブジェクト設置順に0から割り振られる数値です。

 チェックボックスを削除するにはclrobj命令、チェックボックスにフォーカスを移動するにはobjsel命令を利用します。チェックボックスのチェックを付け外しできないよう無効化するには、objgray命令(obj.asモジュール)やHSP 3.2以降で標準のobjenable命令があります。

↑TOP↑

サンプルソース (チェックボックスの表示)

 チェックボックスの表示サンプルです。オブジェクトの表示位置を指定するにはpos命令、表示サイズを指定するにはobjsize命令を使用します。

;	チェックボックスの表示位置
	pos 100, 100

;	チェックボックスの表示サイズ
;	(指定しなかった場合は64x24の大きさ)
//	objsize 100, 20

	chkbox "チェックボックス", a

 chkbox命令の状態保持変数には、口項目に表示されるレ点マークの有無を指定できます。また、後から状態保持変数をチェックすると、チェックボックスのレ点マークがあるかないかを確認できます。

	pos 50, 50
	objsize 100, 22

;	状態保持変数にあらかじめ1を指定しておくと、レ点マークありのチェックボックス
	a = 1

	chkbox "チェックボックスA", a
	chkbox "チェックボックスB", b
	chkbox "チェックボックスB", c

	button "チェック", *check
	stop

*check
;	チェックあり(=1)、チェックなし(=0)
	mes "A:"+a+" / B:"+b+" / C:"+c+"

↑TOP↑

サンプルソース (チェック有無の監視)

 チェックボックスにレ点チェックがあるかないかをリアルタイムで監視する1つの方法です。ループ中に状態保持変数の変化を確認します。

 ちなみに、チェックボックス上の文字列の表示フォントを指定するには、font命令objmode命令(モード2)を利用します。

	font "", 10, 1
	objmode 2

	objsize 120, 20
	chkbox "チェックボックスA", a
	chkbox "チェックボックスB", b

	repeat
		wait 10
		title "A:"+a+" / B:"+b+""
	loop

↑TOP↑

サンプルソース (チェックボックスのチェック切り替え)

 すでに設置してあるチェックボックスに、スクリプト上からレ点マークを入れたり外したりするには、HSPで様々なオブジェクト制御を行うobjprm命令を利用します。chkbox命令の状態保持変数そのものに数値を代入しても意味がないので注意。

	pos 100, 100
	objsize 100, 20

	chkbox "チェック1", a
	chkbox "チェック2", b

	button "選択", *select
	stop

*select
;	↓のようにしても全く意味なし
;	a = 1

;	第2パラメータに0(チェックを外す) or 1(チェックを入れる)
	objprm 0, 1
	objprm 1, 1
//	× オブジェクト設置後に代入処理を用意しても変わりません。

	chkbox "チェック1", a
	chkbox "チェック2", b

	a = 1
	b = 1

 ちなみに、HSP2の場合はobjprm命令の第2パラメータに文字列を指定すると、チェックボックス上に表示されてる文字列を変更できます。ただ、HSP 3.0/3.1ではエラーで機能しないので、sendmsg命令を利用します。HSP 3.2以降は、objprm命令でチェックボックスの文字列を変更できるようになってます。

↑TOP↑

☆ 発展的なHSPサンプルスクリプト

 チェックボックスオブジェクトに関連したHSP3(HSP 3.x)向けの発展的なサンプルソース、モジュールを公開しています。sendmsg命令、oncmd命令、Windows API関数などを利用して、このページで紹介しているチェック監視の別手法、基本的な命令では実現できない発展的な処理を実現してみます。

HSP標準命令には用意されてない「ラジオボタン」 (chkbox命令とsendmsg命令、Win32 API関数をうまく利用して実現) たとえば、チェックボックスにちょっと似たオブジェクトに「ラジオボタン」というのが存在します。複数の項目の中から1項目のみユーザーに選択させるオブジェクトです。HSPの標準命令では用意されてませんが、chkbox命令とWindows API関数を利用して実現してみます。

 他にも文字列の表示位置の変更、文字列の複数行(改行)表示、3ステートチェックボックスの設置など。

 → HSP3オブジェクトの全般的な情報
 → sendmsg命令のコード (ボタン・チェックボックス)
 → チェックボックス関連の発展的なサンプルコード (ラジオボタンについても)

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.