HSP命令講座 <objsel命令>

Last Update : 2009/06/xx

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

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

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

 objsel オブジェクトID

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

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

HSPのオブジェクト 呼び出し後の挙動
button命令 (ボタン)
chkbox命令 (チェックボックス)
listbox命令 (リストボックス)
combox命令 (コンボボックス)
オブジェクト表面色の変化
(Windows XP以前の環境やクラシックスタイル適用時は
点線枠の表示)
input命令 (入力ボックス) キャレットの表示と文字列の選択
mesbox命令 (メッセージボックス) キャレットの表示
winobj命令 (Win32コントロール)
axobj命令 (ActiveXコントロール)
objsel命令は機能せず
(Win32 API関数のSetFocus関数GetFocus関数を利用)

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

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

↑TOP↑

サンプルソース

 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命令を利用します。

↑TOP↑

オブジェクト関連命令

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

↑TOP↑

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

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