【BizBrowser/BizDesigner】OptionボタンのOnChange

仕事で使う機会が多いので、どうしてもBizの情報発信ばっかになる
(あんまり好きじゃないw)

OnChangeイベントは値をプログラムで設定しても動いてしまうので
フォームに変数を宣言して、前の値から変わったかどうかを判定してます。
OnChange を動作させないたくない場合は
Optionボタンに値を設定する前にフォームに宣言した変数にOptionボタンに設定する値を前もって設定することで
OnChange内のIF文で即リターンするようにします。

Form Form1 {	X = 0;	Y = 0;	Width = 274;	Height = 256;	Number optionOldValue = "";	OptionButton OptionButton1 {	X = 13;	Y = 15;	Width = 240;	Height = 72;	UseChange = $TRUE;	OptionItem OptionItem1[] {	Height = 20;	Width = 150;	LayoutSpacing = 0;	LayoutMargin = 2;	Layout = $VERTICAL;	LayoutSpacing = 2;	}	Function OnChange( e ) {	/* デバッグ */	print(this.Name + " - " + e.EventName + "[" + str(this.Value) + "]");	/* 前の値と今の値を比較して同じ場合は何もしない */	if(^.optionOldValue == this.Value){	^.optionOldValue = this.Value;	return;	}	/* 値を変更するか確認する */	if(^.Kakunin() == $FALSE){	/* 値を元に戻す */	this.Value = ^.optionOldValue;	} else {	/* 値を退避する */	^.optionOldValue = this.Value;	/* 本当に動かしたい処理 ⇒ 今回はテキストボックスに値を設定する。*/	^.TextBox1.Value = this.Value;	}	}	}	TextBox TextBox1 {	X = 13;	Y = 211;	Width = 240;	Height = 24;	}	Function Kakunin(){	var ret = //.MessageBox("値を変更してよろしいですか?", "", $OKCANCEL);	if (ret == CancelSelected) {	return $FALSE;	} else {	return $TRUE;	}	}	Button Button1 {	X = 13;	Y = 96;	Width = 240;	Height = 106;	Title = "値を初期化";	Function OnTouch( e ) {	if (^.OptionButton1.Value != ^.optionOldValue) {	/* 設定する値が違うかどうか確認 */	^.optionOldValue = 0;	}	/* 値を初期化 */	^.OptionButton1.Value = 0;	}	}	if ( !$DESIGNTIME ) {	optionOldValue = 0;	/* ↓でCSVを設定すると NULL から 001 になるので OnChangeが動く */	/* オプションボタンの値を設定 */	OptionButton1.OptionItem1 csv(.title, .value) {	"タイトル1","001"	"タイトル2","002"	"タイトル3","003"	"タイトル4","004"	"タイトル5","005"	"タイトル6","006"	};	}
}
メモ

フラグで管理しても良かったかもしれん!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください