命令講座 <objsel命令>

Last Update : 2007/05/xx

objsel命令 (オブジェクトのフォーカス変更・フォーカスのあるオブジェクト取得)

 HSPのオブジェクトにフォーカスを設定する命令です。命令名の由来は、「object select」から。フォーカスは複数の箇所に同時に表示させることはできません。

オブジェクト 呼び出し後の挙動
button命令 (ボタン)
chkbox命令 (チェックボックス)
listbox命令 (リストボックス)
combox命令 (コンボボックス)
点線枠表示
(Windows XP以降のビジュアルスタイル
時はオブジェクトの表面色変化)
input命令 (入力ボックス) キャレット表示と文字列選択
mesbox命令 (メッセージボックス) キャレット表示

 objsel オブジェクトID

 第1パラメータには、オブジェクト設置ごとに0から順番に割り振られる「オブジェクトID」を指定します。ちなみに、オブジェクトIDの値は、オブジェクト設置直後のシステム変数statに格納されてます。

 そして、objsel命令にはもう1つ機能が用意されてます。第1パラメータに「-1」を指定した場合、現在フォーカスのある「オブジェクトID」がシステム変数statに返ってきます。これを利用したのが、入力ボックス(input命令)のEnterキー判定です。

 具体的にフォーカスがオブジェクトに存在すると、ボタンの場合はスペースキーで"押す"の挙動になります。チェックボックスの場合はスペースキーでチェックの切り替えができます。入力ボックスやメッセージボックスの場合は文字を入力できます。リストボックスやコンボボックスの場合はカーソルキー(矢印キー)で項目の変更ができます。

 また、フォーカスはTABキーでオブジェクト間を順番に移動させることができます。TABキーによるフォーカス移動は、HSP2ではデフォルトで無効、HSP3では有効になっており、objmode命令で切り替えができます。

^

サンプルソース

 objsel命令の簡単なサンプルスクリプトです。普通のフォーカス指定。そして、キーボードの「C」キーを押した時、タイトルバーにフォーカスのあるオブジェクトIDが表示されます。

;	objsel命令サンプル

	onkey gosub *jump

	chkbox "あー", id0
	chkbox "いー", id1
	combox id2, , "フォーカス\n設定\nコントロール"
	listbox id3, 50, "objsel\nオブジェクト\nHSP"
	input id4
	id5 = "" : mesbox id5, 200, 50

;	通常のフォーカス指定 (オブジェクトID)
	objsel 1

	stop

*jump
;	Cキーを押したら
	if wparam = 'C' {
;		-1を指定した場合はフォーカスのあるオブジェクトIDがstatに返る
		objsel -1
		title "オブジェクトID:"+stat
	}
	return

※ コンボボックスやリストボックスの項目選択
 objsel命令はあくまで1オブジェクト全体のフォーカス指定として機能します。combox命令(コンボボックス)やlistbox命令(リストボックス)の特定項目を選択状態にするにはobjprm命令を利用します。

^

オブジェクト関連命令

 HSP3 あれこれ (オブジェクト編)では、オブジェクトに関連した各種命令の一覧表を掲載してます。

^

Copyright © 2005-2008 HSP情報サイト Let's HSP!. All rights reserved.