clrobj命令 (オブジェクトの削除) - Let's HSP!

命令講座 <clrobj命令>

Last Update : 2007/11/xx

clrobj命令 (オブジェクトの削除)

 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オブジェクトに関連する命令を紹介してます。

^

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