Last Update : 2007/11/xx
HSPに登場する各種オブジェクトをクリア(消去)する命令です。命令名の由来は「clear object」から。
clrobj 最初のオブジェクトID, 最後のオブジェクトID
オブジェクトは、ボタン(button命令)、チェックボックス(chkbox命令)、メッセージボックス(mesbox命令)、入力ボックス(input命令)、コンボボックス(combox命令)、リストボックス(listbox命令)です。また、コモンコントロールを表示するwinobj命令と、ActiveXコントロールを表示するaxobj命令もその対象となります。
第1パラメータには、オブジェクトのクリア対象となる最初のオブジェクトID値、第2パラメータには、オブジェクトのクリア対象となる最後のオブジェクトID値を指定します。オブジェクトIDは、スクリプト上でオブジェクトを表示する命令を呼び出した順に0から割り振られていく数値です。
なお、第2パラメータに-1(または省略)した場合は、オブジェクトIDの最後となるオブジェクトまでが対象になります。第1パラメータと第2パラメータを無指定にした場合は、すべてのオブジェクトが消去されます。
チェックボックスを例に、適当なサンプルスクリプト。
repeat 5 chkbox ""+cnt+"", a loop button "1~3消す", *del stop *del clrobj 1, 3
repeat 5 chkbox ""+cnt+"", a loop button "2のみ消す", *del stop *del ; 両方に同じオブジェクトIDを指定する clrobj 2, 2
repeat 5 chkbox ""+cnt+"", a loop button "3以降消す", *del stop *del ; 第2パラは -1 の省略 clrobj 3
repeat 5 chkbox ""+cnt+"", a loop button "全部消す", *del stop *del ; すっからかんに clrobj
オブジェクトのすべての消去にcls命令の利用を思いつくかもしれません。確かにオブジェクトの全クリアとして機能しますが、他にも変数やウィンドウなど内部の様々な初期化処理が行われます。安易にcls命令を何度も呼ぶような処理にすると、動作パフォーマンスにモロに響きます。オブジェクトの消去だけを行いたいならば、必ずclrobj命令を利用しましょう。
また、オブジェクトの内容だけを変更するには、objprm命令が用意されています。くれぐれもオブジェクトの内容を変更するためだけに、clrobj命令でオブジェクトを一度消して、同じオブジェクトを同じ場所に再度設置する、なんてことはしませぬよう・・・。
HSP3 オブジェクト編のページでは、GUIオブジェクトに関連する命令を紹介してます。