MQLで書かれたUIのギャラリー - ページ 64

 

9. V_LASTの 前の値を返す

すべてのパラメータの前の値は自動的に保存されます。これを取得するには、要素関数を呼び出し、_V_LAST 識別子を渡す必要がある

実際の例を見てみましょう

1.目的のウィンドウを開く:

   //------------------------------------------------
   //Open the window "Settings example 2".

   w_7_Settings_example_2();
   //------------------------------------------------



2.上の入力フィールドに 値(文字列)を送る:

   //------------------------------------------------
   //Set up the first string in the textbox:

   w7_s_p4_EDIT_Comment_1("1, 2, 3, 4, 5");
   //------------------------------------------------



3.今度は同じフィールドに別の文字列を送る:

   //------------------------------------------------
   //Right after, reset it by the new string:

   w7_s_p4_EDIT_Comment_1("A, B, C, D, E");
   //------------------------------------------------



4.前の文字列が戻ってくる:

   //------------------------------------------------
   //Get back the first value:

   string The_first_value = w7_s_p4_EDIT_Comment_1(get_s,p4_V_LAST);
   //------------------------------------------------


5.そしてそれを下のフィールドに送る:

   //------------------------------------------------
   //And send it into the textbox below:

   w7_s_p4_EDIT_Comment_2(The_first_value);
   //------------------------------------------------


6.上のフィールドの行をもう一度書き直そう:

   //------------------------------------------------
   //Reset the value again:

   w7_s_p4_EDIT_Comment_1("A1, B2, C3, D4, E5");
   //------------------------------------------------


7.前の文字列を下のフィールドに送ろう:

   //------------------------------------------------
   //And get the the previous value back:

   string The_second_value = w7_s_p4_EDIT_Comment_1(get_s,p4_V_LAST);
   //------------------------------------------------
   
   //------------------------------------------------
   //Send it into the third textbox:

   w7_s_p4_EDIT_Comment_3(The_second_value);
   //------------------------------------------------



結果:

  • 上のフィールドは現在の文字列。
  • 真ん中のフィールドには元の文字列。
  • 下のフィールドには2番目の文字列。

//--------------------------------------------------------------------------------------------------------------------------

どのような場合でも、同じアプローチが有効である。

V_LAST 識別子を使用すると、任意の要素の最後の値を得ることができます(識別子が個々のプロパティのリストに規定されている場合)。




次に、ON/OFF 状態の設定と要素のロックを考える。

 
Реter Konow #:
どのような場合にも同じアプローチが有効です。

ON/OFFの状態も含まれますか?

 
hini #:

ON/OFF状態も含まれますか?

V_LASTは、任意の要素の最後のパラメータ値を返します。

他の要素についても、上に示した方法を使うことができます。スライダーとボタン付きフィールドの例は、要素の状態を切り替えるトピックの後で紹介します。

同期に注目すると、一方のフィールドはスライダーの現在の値を返し、もう一方は前の値を返します。

 

10.要素ごとにON、OFF、LOCK_ON、LOCK_OFF、LOCK、UNLOCKの状態を設定する

ボタンやチェックボックスが 典型的な 例です。しかし、常に中立の状態にある要素も多くあります。常にOFF です。ボタンやチェックボックスとの共通点は?どちらもロックしたりアンロックしたり できる。違いは、ボタンとチェックボックスがオンとオフの2つの状態でロックさ れる のに対し、他のエレメントは中立の 状態のみであることです。このような違いがあるため、同じ機能を果たす識別子がいくつかあります。

いくつかの例を考えてみよう:

1.ボタンとチェックボックスのある設定ウィンドウを開いてみましょう:

   //------------------------------------------------
   //Open the window "Settings example 1".
   //------------------------------------------------
   w_6_Settings_example_1();
   //------------------------------------------------



2.ボタンの有効状態を設定します:

   //------------------------------------------------
   //Set the button "Start" ON:

   w6_i_p1_BUTTON_Start(p1_ON);
   //------------------------------------------------

結果:ボタンが押された状態に切り替わりました。


3.次に、チェック ボックスに オン 状態を設定します:

   //------------------------------------------------
   //Set the checkboxes ON:

   w6_i_p7_CHECKBOX_Set_an_option(p7_ON);
   w6_i_p7_CHECKBOX_Set_another_option(p7_ON);
   w6_i_p7_CHECKBOX_And_another_option(p7_ON);
   //------------------------------------------------

結果:チェックボックスは有効状態に移りました。

//----------------------------------------------------------------------------------------------------------------------


4.次に、OFF 識別子を使って、"Start "ボタンの ON 状態を解除します:

   //------------------------------------------------
   //Set the button "Start" OFF:

   w6_i_p1_BUTTON_Start(p1_OFF);
   //------------------------------------------------

結果:ボタンはニュートラル状態に戻りました。


5. チェック ボックスに中立のOFF 状態を戻してみましょう

   //------------------------------------------------
   //Set the checkboxes OFF:
 
   w6_i_p7_CHECKBOX_Set_an_option(p7_OFF);
   w6_i_p7_CHECKBOX_Set_another_option(p7_OFF);
   w6_i_p7_CHECKBOX_And_another_option(p7_OFF);
   //------------------------------------------------

結果:チェックボックスはニュートラル状態に戻った。


//-------------------------------------------------------------------------------------------------------------------------


次に、ボタンとチェックボックスを、ニュートラルとアクティベートという2つの可能な状態にロックしてみましょう:


1.ボタンをニュートラル状態にロックしてみましょう:

   //------------------------------------------------
   //Lock the button "Start" in the state OFF:

   w6_i_p1_BUTTON_Start(p1_LOCK_OFF);
   //------------------------------------------------

結果:ボタンはニュートラル状態にロックされました。

(*失敗、修正します。)。


2.チェックボックスをニュートラル状態にロックしよう:

   //------------------------------------------------
   //Lock the checkboxes in the state OFF:

   w6_i_p7_CHECKBOX_Set_an_option(p7_LOCK_OFF);
   w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_OFF);
   w6_i_p7_CHECKBOX_And_another_option(p7_LOCK_OFF);
   //------------------------------------------------

結果:チェックボックスが中立状態にロックされる。


(*いくつかの要素でロック状態でテキストが消える問題は、次のバージョンで解決されます)。


3.LOCK_ON 識別子を使用して、ボタンとチェックボックスを押された状態でロックします:

   //------------------------------------------------
   //Lock the button "Start" in the state ON:

   w6_i_p1_BUTTON_Start(p1_LOCK_ON);
   //------------------------------------------------
   //------------------------------------------------
   //Lock the checkboxes in the state ON:

   w6_i_p7_CHECKBOX_Set_an_option(p7_LOCK_ON);
   w6_i_p7_CHECKBOX_Set_another_option(p7_LOCK_ON);
   w6_i_p7_CHECKBOX_And_another_option(p7_LOCK_ON);
   //------------------------------------------------

結果: ボタンとチェックボックスは押された状態でロックされます。



//--------------------------------------------------------------------------------------------------------

次に 常に中立状態にある 要素について、 LOCKと UNLOCK コマンドをテストしてみましょう。

例えば、同じウィンドウ内の要素C_LIST、 D_LIST、H_SLIDER、S_EDITを取り上げて みましょう:



1.4つの要素を一度にロックしてみましょう:

   //------------------------------------------------
   //Lock the elements:

   w6_s_p6_C_LIST_C_LIST_1(p6_LOCK);
   w6_s_p6_D_LIST_D_LIST_1(p6_LOCK);
   w6_i_p3_H_SLIDER_Roll_the_value(p3_LOCK);
   w6_d_p5_S_EDIT_Spin_the_value(p5_LOCK);
   //------------------------------------------------

結果:要素C_LIST、 D_LIST、H_SLIDER、S_EDITが ロックされる


2.要素のロックを解除します:

   //------------------------------------------------
   //Unlock the elements:

   w6_s_p6_C_LIST_C_LIST_1(p6_UNLOCK);
   w6_s_p6_D_LIST_D_LIST_1(p6_UNLOCK);
   w6_i_p3_H_SLIDER_Roll_the_value(p3_UNLOCK);
   w6_d_p5_S_EDIT_Spin_the_value(p5_UNLOCK);
   //------------------------------------------------

結果:要素のロックが解除されました。

//-------------------------------------------------------------------------------------

他の要素も同じようにロックされ、ロック解除されるので、これらの例でこのトピックを終了します。

...

次に、パラメータ値の同期について説明します。

 
とても良い、とても実用的だ。
 
hini #:
とても良い、とても実用的だ。

ありがとう!ユーザーからの評価は、さらなる発展のためにとても重要です。

 
次のトピックの分量を天秤にかけた結果、明日に延期したほうが、前のトピックをよりよく記憶できるのではないかと思う。
 

良いGUIのサイン

ミニマリズム:グラフィックに占めるスペースを最小限にし、重要でない要素や注意をそらす情報を排除する。

機能性:すべてのスペースが可能な限り有用であること、すべての機能が直感的であること。

人間工学:最も頻繁に使用される要素は、アクセスしやすく、大きくすべきである。

美観:整列、標準的なサイズ、統一されたスタイル、配色。

 
Ivan Titov #:

優れたGUIの証。

ミニマリズム:グラフィックに占めるスペースが最小であること、重要でない要素や注意をそらす情報がないこと。

機能性:すべてのスペースが可能な限り有用であること、すべての機能が直感的であること。

人間工学:最も頻繁に使用される要素は、アクセスしやすく、大きくすべきである。

美観:整列、標準的な寸法、統一されたスタイル、配色。


例を示してくれてありがとう。あなたのテーゼに完全に同意する。私もいずれはこのレベルに到達したいと思っている。
 
Реter Konow #:
異なるエレメントにON、OFF、LOCK_ON、LOCK_OFF、LOCK、UNLOCKのステータスを設定する

ボタンのオン/オフ状態を取得するには?