メンバ一覧 DisableObjectsInForm | 前のメソッド 次のメソッド |
VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)
★ このメソッドは、V9.60.25.32 および V8.60.25.32 からベータ提供されたもので、この仕様は変更されることがあります。
◇ 機能および役割
このフォーム上にある全コントロールの Enabled メソッドを偽 (False, false) に設定し、操作できないようにする。ただし、パラメタで指定されたコントロールを除外できる。
このメソッドは、長時間を要する処理の前などに、処理中にアプリケーション画面の操作を禁止するために使用することを想定している。再度操作を許可する場合、EnableObjectsInForm メソッドを使用して元の状態の戻すことができる。
◇ 所属クラス (ツーピーススタイルの場合にこのメソッドが宣言されているクラス)
AppliTech.WorkFrame.FormBase (ローカル)
◇ 呼出し方
fB.DisableObjectsInForm(除外コントロール配列)
(ただし fB は、クラス FormBase のインスタンス)
◇ 戻り値の型および意味
(戻り値なし)
◇ パラメタの型および意味
除外コントロール配列 (Object 配列型) Enabled プロパティを変更したくないコントロールの実体を指定する。この配列に格納可能なコントロールは、MANDALA 指示コントロールである。すなわち、Button (System.Windows.Forms.Button), MenuItem (System.Windows.Forms.MenuItem), ToolStripButton (System.Windows.Forms.ToolStripButton), ToolStripMenuItem (System.Windows.Forms.ToolStripMenuItem) などが格納可能なオブジェクトの型となる。MANDALA 指示コントロール以外のオブジェクトが指定されている場合、実行時例外が発生する。
◇ 例外の発生 (誤った呼出しの際に発生する例外)
「除外する指示コントロールのパラメタとして指定できない型 (型名) のオブジェクトです (DisableObjectsInForm)」
「除外する指示コントロールのパラメタとして使用できない名前 (名前) のコントロールが指定されました (DisableObjectsInForm)」
「DisableObjectsInForm が呼び出された後でないと使えません (EnableObjectsInForm)」
◇ 使用上のヒントと注意事項
DisableObjectsInForm メソッドを実行すると、すべてのデータ項目が Disabled 状態になるので、その時点で入力可能だったデータ項目はフォーカスを失う。このため、そのデータ項目の Check フックメソッドなどが呼び出される。もし入力途中の内容がエラーと判断されると、そのデータ項目はエラー状態のまま使用不可となる。Update フックメソッドなどで本メソッドを使用する場合、エラー項目があるとフックメソッドが呼び出されないため、このようなことにはならない。
DisableObjectsInForm メソッドと EnableObjectsInForm メソッドは、対になるように実行される必要がある。本メソッドを使用する場合の処理シーケンスは次のようになる。
これらは同一のフックメソッド内で完結していなければならない。
このシーケンスを守らず、EnableObjectsInForm を先に呼び出したり、DisableObjectsInForm を連続して呼び出したりすると実行時例外が発生する。
◇ 関連事項
このメソッドで使用不可にしたコントロールの状態を元に戻すためには、EnableObjectsInForm メソッドを使用する。
◇ 使用例
Friend Function DisableAll_GetEvent(ByVal fB As FormBase) As Boolean 'ループ脱出フラグ AbortDisableAll = False 'ループ回数 Dim wk_imax As Integer = 1000 Dim wk_form As Fr_受注業務 = CType(fB.myForm, Fr_受注業務) 'Disable All ボタンのテキストを保存 Dim wk_svText As String = wk_form.Cm_DisableAll.Text 'コントロール無効化 fB.DisableObjectsInForm(New Object() {wk_form.Cm_EnableAll, wk_form.Mn_EnableAllMn}) 'ダミーウェイトのループ For i As Integer = 0 To wk_imax '脱出フラグのチェック If AbortDisableAll Then Exit For End If 'ボタンに状態を表示 wk_form.Cm_DisableAll.Text = i.ToString() + "/" + wk_imax.ToString() '別の GUI イベントを実行 System.Windows.Forms.Application.DoEvents() 'ウェイト用スリープ System.Threading.Thread.Sleep(10) Next 'コントロール無効解除 fB.EnableObjectsInForm() 'Disable All ボタンのテキストを復元 wk_form.Cm_DisableAll.Text = wk_svText Return FormBase.GETEVENT_Allow End Function
internal bool DisableAll_GetEvent(FormBase fB) { //ループ脱出フラグ AbortDisableAll = false; //ループ回数 int wk_imax = 1000; Fr_受注業務 wk_form = (Fr_受注業務)fB.myForm; //Disable All ボタンのテキストを保存 String wk_svText = wk_form.Cm_DisableAll.Text; //コントロール無効化 fB.DisableObjectsInForm(new object[] {wk_form.Cm_EnableAll, wk_form.Mn_EnableAllMn}); //ダミーウェイトのループ for (int i = 0; i < wk_imax; i++) { //脱出フラグのチェック if (AbortDisableAll) { break; } //ボタンに状態を表示 wk_form.Cm_DisableAll.Text = i.ToString() + "/" + wk_imax.ToString(); //別の GUI イベントを実行 System.Windows.Forms.Application.DoEvents(); //ウェイト用スリープ System.Threading.Thread.Sleep(10); } //コントロール無効解除 fB.EnableObjectsInForm(); //Disable All ボタンのテキストを復元 wk_form.Cm_DisableAll.Text = wk_svText; return FormBase.GETEVENT_Allow; }
boolean DisableAll_GetEvent(FormBase fB) {
Fr_受注業務 wk_form = (Fr_受注業務)fB.myForm.getJFrame();
fB.DisableObjectsInForm(new Object[] { wk_form.Cm_EnableAll, wk_form.Mn_EnableAllMn });
new Thread(this).start();
return FormBase.GETEVENT_Allow;
}