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

 
次のトピックに移ろう:

4. 個別アイテムのプロパティのリストをナビゲートする。

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

検討すべきトピックのリストを思い出してください:

1.インテリセンスのリスト内での方向づけと、右ウィンドウの機能の選択。

2.プログラムでウィンドウを開いたり閉じたりする。

3.インテリセンスのリストで方向を確認し、正しいウィンドウの正しい項目を選択する。

4. 個別の要素プロパティのリストをナビゲートする。

5.要素とウィンドウ・ラッパー関数の名前を解析する。

6. 選択した要素の パラメータ 値を、その型の変数に返す。いくつかの異なる要素の3つのタイプを考える。

7.異なるタイプの要素のパラメータに値を設定する。これらの要素のインターフェイスウィンドウに値がどのように表示されるか見てみよう。

8.あるエレメントのパラメータ値を返し、その 値を 修正して 別のエレメントに転送する。異なるタイプの要素と値を考え、異なるウィンドウで異なるタイプの要素間の転送をテストしてみましょう。

9.前の値を返す(_V_LAST)。いつ、どのような場合に最後の値が必要なのか(現在の値と混同しないように)。

10.異なるタイプのエレメントのON/OFF/LOCK_ON/LOCK_OFF/LOCK/UNLOCK状態の設定をテストする。

11.11.異なるタイプの要素(例えば、ボタンとスライダーを持つ入力フィールド)の値の変化をリンクし、同期させてみましょう。1つの要素(手動またはソフトウェア)の値が変化すると、それに応じて2番目の要素の値も変化するとします。

12.スライダーとボタン付き入力フィールドの範囲の境界を、ラッパー関数を使ってプログラムでリセットしてみましょう。テストする時間がなかったが、うまくいきそうな気がする。しかし、見てみよう。

13.13.ラッパー関数で要素の状態を返すようにしてみよう。機能には含まれているのだが、テストする時間がない。さて、どうなることやら。結果は不明。

14.テキストとエレメント・ベースの色を取得・設定してみましょう。これらの色を簡単なイベントや値の境界に関連付けることができます。

15.新しいAPIファイルのプリントアウトをナビゲートしたり読んだりする方法について、もう少しお話ししましょう。

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

黄色は、すでにカバーされたトピックを示します。

 
このトピックを一点ずつ分解してみよう:

  • 要素の "関連性 "に基づいてプロパティをリストに分けるというコンセプトは、成功裏に実装された。
  • 実装の結果、すべてのタイプの要素に対して 7つのユニークなプロパティリストが作成されました。
  • 各リストには特別な識別子が割り当てられています。これは接頭辞p(propertyの略)と通し番号である。
  • その結果、各リストはp1、p2、p3、p4、p5、p6、p 7 という 7 つの接頭辞によってインテリセンスで見つけることができます
  • 利便性と混乱を避けるために、プロパティ・リストの接頭辞はラッパー関数の名前に 含まれています:

  • 接頭辞を入力すると、個々の プロパティのリストが表示されます。プレフィックスを入力すると、個々のプロパティのリストが表示されます。この点が重要なので、あえて 「個々の」という 言葉を強調しました。
  • プロパティの値を返したり設定したりするには ラッパー関数は、接頭辞を自身の名前に書いたプロパティ名のみを受け入れます。:


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


  • リストのこれらのプロパティだけが、チェックボックスで利用可能ですしかし、リスト自体はチェックボックスだけでなく、他のいくつかの要素にも属して います。

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


  • C_LIST要素は、そのリストに特別なプロパティをまだ持っていません。ラッパーが実行できるアクションだけです(V_LAST - 最後の値を返すことを除く)。

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


  • C_LISTとは異なり、スライダーには 利用可能なプロパティとアクションの大きなリストがあります。

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


  • S_EDIT要素には、利用可能な幅広いプロパティとアクションが属しています:


強調:

各ラッパー関数は、その名前にプレフィックスが明記されているプロパティのみを受け入れます。


これが、リストを使った実際の作業の様子です(最後に括弧を付けてください:)

gifは少しスピードアップしています。


gifに示された呼び出しの結果、ラッパー関数は指定されたプロパティの値を返します。

呼び出しの前に、プロパティの値や関数の実行結果を格納する変数を宣言する必要があります。 これについては、以下のトピックで 詳しく説明して います。

 

5.
要素名とウィンドウラッパー関数を解析する


1.要素ラッパー関数名:

EDITテキスト 入力フィールド 要素関数の例を見てみましょう:w7_s_p4_EDIT_Comment_1()

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

  • w7- ウィンドウ番号 7

//-------------------------------------------------------------
  • s- このラッパ関数の戻り値の型string.

//-------------------------------------------------------------
  • p4- プロパティリストのプレフィックス.

/ /-------------------------------------------------------------
  • EDIT- 要素のタイプ.

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

  • Comment_1- 特定の要素の 名前

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


2.ウィンドウ・ラッパー関数の名前:

例として別の関数を見てみましょう:w_15_Processing_the_data();

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

  • w_15- ウィンドウ番号15
数字はwの 直後ではなく、ダッシュ_を 経由していることに注意してください これは重要です。

) //-------------------------------------------------------------
  • Processing_the_data - このウィンドウの名前 (警告ウィンドウの場合、名前はCaption(ウィンドウヘッダのテキスト)と一致しないことがある

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

window関数は、まだプロパティのリストを開くための接頭辞を持っていないことに注意すべきである。この機能は必ず現れます。返す/設定するウィンドウプロパティの特別なリストが生成され、接頭辞が割り当てられます。また、ウィンドウ関数にはまだ戻り値の型文字がありません。

今のところ、この関数はウィンドウを開くか閉じることしかできません。


これらの不具合は次のリリースで修正される予定です。


 
このチュートリアル情報は、個人的に一度まとめておくことをお勧めする。
 
hini #:
そうでないと、将来的にコメント欄が溢れかえってしまうからだ。
もちろん、この情報は要約され、あるべき順序で並べられます。
 
現時点では、指示、説明、コメントの順序が形成されつつあるだけである。将来のドキュメントの内容は、開発とユーザーとのコミュニケーションの過程で調和的に蓄積されていく。その結果、背景情報は部分的に提示される。フィードバックを受けることは必要であり、技術的ソリューションの質を高める重要な段階である。ソフトウェアは形成段階を経て、一般の人々の積極的な参加によって完全な機能を達成することができる。その結果、詳細な文書を備えた完全なプログラムが完成する。
 

6.パラメータまたはプロパティの値を、必要な型の変数に返す


要素パラメータの型(intdoublestring)によって、要素関数の型が決まります。

要素関数は、int 型、double 型、string 型のいずれかを持つパラメータの値を返すことが知られています。

しかし、関数はプロパティ値も返します。

パラメータ値の型が、常に int型 であるプロパティの型と一致しない場合がありますこのような不都合は、関数の普遍性の代償である。

ユーザーの仕事は 受け取った値を自分で必要な型に変換することです。.


強調しておくが、すべての要素プロパティの主な型は int である


質問と答えの例を詳しく見てみよう:

  • -Q: 関数の型が文字列の 場合、int 型のプロパティの値はどのように返されますか?
  • - 答え関数はint型の 値を string 型で返します
  • - 質問:関数の型がdoubleの 場合、関数はどのようにint 型の値を返しますか?
  • - 答え: 関数は double 型のint型の 値を返します。
  • -Question: 関数の型がintの 場合、関数はどのようにdoubleの 値を返しますか?
  • - 答え:double 型の要素のプロパティは存在しません。要素のパラメータの プロパティはdouble 型にすることができます。この場合、関数自体もdouble 型になります。


パラメータ値の型が要素の関数の型を決定します。

double 型の要素のプロパティはありません int型だけ です。しかし、doublestring int 型を受け付けるパラメータ・プロパティはあります。例えば、V_CURRENT, V_LAST, V_MAX, V_MIN, V_STEPは int 型でもdouble 型でもかまいません。しかし、パラメータのプロパティやパラメータ自体がint型でない 場合、関数はint型に なりません

また、スライダー関数がint 型を返す場合、要素の作成段階で、ユーザー自身がパラメータやプロパティに整数を割り当てたことを意味します - 例えば、スライダー範囲やボタン付き入力フィールドを整数値の中に配置したなど .



結論: ユーザーのタスクは、受け取った値を必要な型に変換することです

いくつかの実例を見てみよう:

1.

   //------------------------------------------------
   //Текстовое поле ввода EDIT. Тип функции - string.
   //Получение и установка цвета текста и основания:
   //------------------------------------------------
   
   //1. Устанавливаем любой текст в пустое поле ввода:
   w7_s_p4_EDIT_Comment_1("Some random text");
   //------------------------------------------------

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

2.

   //------------------------------------------------
   //2. Получаем цвет основания поля ввода:
   uint Comment_1_base_color =  (uint)w7_s_p4_EDIT_Comment_1(get_s,p4_COLOR_base); 
   //------------------------------------------------
   //Выводим результат в журнал:
   Print("Comment_1_base_color  ",Comment_1_base_color);
   //------------------------------------------------

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

3.

   //------------------------------------------------
   //3. Назначаем основанию новый цвет:
   w7_s_p4_EDIT_Comment_1((uint)clrWheat,p4_COLOR_base); 
   //------------------------------------------------

結果をご覧ください:


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

4.

   //------------------------------------------------
   //4. Получаем цвет текста поля ввода: 
   uint Comment_1_text_color =  (uint)w7_s_p4_EDIT_Comment_1(get_s,p4_COLOR_text); 
   //------------------------------------------------
   //Выводим результат в журнал:
   Print("Comment_1_text_color  ",Comment_1_text_color); 
   //------------------------------------------------


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

5.

   //------------------------------------------------
   //5. Устанавливаем другой цвет тексту:
   w7_s_p4_EDIT_Comment_1((uint)clrRed,p4_COLOR_text); 
   //------------------------------------------------

結果をご覧ください:




次に、他の要素やパラメータのプロパティの取得と設定をテストしてみましょう。double型を扱うことも試してみましょう。

Документация по MQL5: Основы языка / Операторы / Оператор возврата return
Документация по MQL5: Основы языка / Операторы / Оператор возврата return
  • www.mql5.com
Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается...
 

コードに従ってテストしてみたところ、ランダムな文字列の長さが長すぎる場合に自動で隠れないという予期せぬことを発見した。

w7_s_p4_EDIT_Comment_1("Some random text AAAAAAAA");


 
これらの問題は些細なことなので、後回しにして様子を見てください。時間があればチェックしてみてください!
 

私にとって致命的な問題を発見した。それは、使用しているテキストがGUI上で横向きに表示されることだ......通常のように90度回転して表示される:

你好