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命令の利用を思いつく人がいるかもしれません。確かにそのように機能しますが、この命令は他にも変数やウィンドウなど様々な初期化処理が内部で行われます。安易にcls命令を何度も呼ぶような処理にすると、動作パフォーマンスにモロに響きます。オブジェクトの消去だけを行いたいならば、必ずclrobj命令を利用しましょう。
・オブジェクトの再表示
clrobj命令でオブジェクトを消去した場合、そのオブジェクトの再表示(復帰)はできません。再びオブジェクトを設置する形になります。ちなみに、objgray命令(obj.asモジュール)やHSP
3.2以降で標準のobjenable命令を利用すれば、オブジェクトを表示したまま操作できないようにすることも可能です。
・オブジェクトの内容や状態の変更
オブジェクトの内容や状態を変更するには、専用のobjprm命令が用意されています。くれぐれもオブジェクトの中身を変更するためだけにclrobj命令でオブジェクトを消して、同じオブジェクトを同じ場所に再び設置するようなムダな処理は避けましょう。
HSP3 オブジェクト編のページでは、GUIオブジェクトに関連する命令のリストを紹介してます。