Last Update : 2007/05/xx
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 あれこれ (オブジェクト編)では、オブジェクトに関連した各種命令の一覧表を掲載してます。