ライブラリ: EasyAndFastGUIグラフィックインターフェース作成ライブラリ - ページ 18

 
Marco vd Heijden:

初期にはMQL4とMQL5で開発されたが、最後の数例はMQL5用である。

これはMQL4で動作させることができないという意味ではありません。

コードは通常、ちょっとした調整が必要です。

複雑なMT5の.mqhファイルは、変数やオブジェクトが多すぎてイライラさせられます!

 
17334708:

複雑なMT5の.mqhファイルは、変数やオブジェクトが多すぎてイライラします!

例えば、変数iについて警告が表示されたら、そのループではiをi1に、次のループではi2、i3というように、iをi1にリネームします。

また、ライブラリ全体を変換する必要はなく、必要な要素だけを取り出して、それだけを変換することもできる。

 
しかし、多くの要素が関連しています。ループや変数を変更することは、素晴らしい過負荷作業になります。
 
全部が欲しい場合だけで、1つの要素だけが欲しいわけではない。
 
このライブラリーはMQL4で使用できますか?
 
私がしたこと
いくつかのコンボボックスと数値入力フィールドを持つパネル。メインのコンボボックスが1つあり、他のフィールドはそれに依存している。

どのように動作するか:
メインのコンボボックスの値が変化すると、他の入力フィールドとコンボボックスが変化する。

私が試した方法
1) - メイン・コンボボックスの値を再選択するとき - すべての不要な要素を削除し(Delete())、そして再作成する(Create...())。その結果 - 再描画されたコンボボックスの要素をクリックすると、フォーム要素の配列にアクセスする 際に配列の範囲外が発生します。エラー箇所で配列のサイズをチェックするようにしました(ループが配列を越えてしまうことがないように)。

2) - 1)の方法を試しましたが、同時にこのスレッドに書かれているWndContainer関数に、"DeleteElementsFromArray "の先頭に追加しました。

3) - すべての要素を同じX,Y値で描画し(すべての要素を1点に)、すぐに非表示にし(Hide())、必要に応じてX,Yを変更し(XGap(...), YGap(...))、描画しようとしました(Update(true); Show())。- ここでもう一つ問題があります。非表示にした後、要素の一部が非表示にならず、他の部分はLabelTextを失います(視覚的に存在しないだけです)。


何かアドバイスはありますか?
 
Mikhail Mitin:

WndContainerに、このスレッドに書かれている "DeleteElementsFromArray "の冒頭の関数を追加した。


私は単純な要素のためにそれを書いた。コンボボックスは単純ではない)現在のバージョンは複雑な要素を削除するようになっているが、まだテストしていない。)

そして、隠すために要素にm_is_hidenプロパティを追加し、CWndEvents::Show(const uint window_index);でtrueを持つ要素はスキップされるようにした。

 

やあ、みんな、

グラフィカル・エレメント・パネルを利用するビジネス・コードを開発することは一つのことであり、このライブラリはとても役に立ちます。しかし、パフォーマンスが低かったり、バグを再現する必要があったりすると、Strategy Testerを避けて通ることはできません、

Strategy Testerを 回避する方法はほぼありません。

とはいえ、ライブチャートで修正しようとするのは非常に面倒です(例えば、グラフィカルエレメントをクリックできるように、特定の条件が満たされるまで待つ...ガーン)。

ストラテジーテスターできちんとテストできれば、こんなに便利なことはありません!


1.MetaTrader開発チームは、ST内でvoid OnChartEventがトリガーされない理由について、フォーラムのどこかで話していましたか?

2.回避策を確立するチャンスはありますか?



マルセル

 

ファイルDefines.mqhのマクロは、Alglib {ap.mqh}と互換性がありません。

#define  TO_STRING(A) #A

のマクロはAlglib{ap.mqh)と互換性がない。

class CSerializer
  {
   //--- 列挙
   enum SMODE { DEFAULT,ALLOC,TO_STRING,FROM_STRING };

名前を変更しなければならなかった。

 

2132にプラットフォーム・アップデートをインストールした後、コンパイル・エラーが発生しました:

  • 'WndEvents.mqh' - 'CWndContainer::~CWndContainer' - protected memberfunction WndEvents.mqh 11 27 にアクセスできません。
  • 'CWndEvents::~CWndEvents' - protected member function にアクセスできない WndCreate.mqh 10 27


修正方法

  • ファイル "WndContainer.mqh "の "CWndContainer "のコンストラクタとデストラクタの "protected "を "public "に置き換える。
  • ファイル "WndEvents.mqh "の "CWndCreate "のコンストラクタとデストラクタの "protected "を "public "に置き換える。
  • ファイル "WndCreate.mqh "の "CWndCreate "のコンストラクタとデストラクタの "protected "を "public "に置き換える。