記事「DoEasy-コントロール(第17部):オブジェクトの非表示部分の切り取り、補助矢印ボタンのWinFormsオブジェクト」についてのディスカッション

 

新しい記事「DoEasy-コントロール(第17部):オブジェクトの非表示部分の切り取り、補助矢印ボタンのWinFormsオブジェクト」はパブリッシュされました:

この記事では、コンテナの外側にあるオブジェクトセクションを非表示にする機能を作成します。また、他のWinFormsオブジェクトの一部として使用する補助矢印ボタンオブジェクトを作成します。

EAをコンパイルし、チャート上で起動します。


表示範囲を超える領域の切り取りは正しく機能し、コンテナを超えるヘッダーはその端に沿って切り取られます。要素が左側のコンテナを超えるようにTabControlの座標を設定すると、ここですべてが正しく切り取られます。要素自体がパネルの端に沿って切り取られ、コントロールに配置されたボタンも、コンテナではなく、パネルの可視性範囲の端によって切り取られます。ここではすべてが正しく機能します。横方向の左右ボタンの幅は、デフォルト(9ピクセル)よりも小さくなっています。それにもかかわらず、それらは正しく表示されます。
何を修正する必要があるのでしょうか。影オブジェクトは、それをキャストするパネルの前に表示されます。これについては後で扱います。


作者: Artyom Trishkin

 
コミュニティからの反応がこれほど弱いのは不思議だ。もう誰もグラフィカル・インターフェースを必要としていないのだろうか一時はこの話題で熱い議論が交わされたものだ。どうやら仲間はずいぶん減ってしまったようだ。残念なことだ。

今になってようやく、このシリーズのコードを詳しく読む時間を見つけた。長い年月を経て、ようやく誰かが成熟し、他の作者によるこれまでのすべての反復の欠点を考慮に入れて、MQLにおけるグラフィカル・インターフェースの開発において新たな進化のラウンドを始めることにしたのだ。

つい最近、MQL開発における長い休止の後、私はEasyAndFastGUI ライブラリの新しいバージョンに取り組み始めましたが、このバージョンはすでにはるかに興味深いソリューションを実装することを可能にするベースを持っているため、MQL開発者のコミュニティにとってすぐに無関係になることがわかりました。

私は、このプロジェクトが最終的に完成し、標準ライブラリのグラフィカルな部分に取って代わることを期待しています。EasyAndFastGUIに 実装されている、私にとって最低限必要なものすべてと、それ以上のものが実現されるのであれば、私は喜んでそれを私のプロジェクトで使いたいと思います。

もちろん、まだやるべきことはたくさんありますが、作者ならやってくれると信じています。

頑張ってください!
EasyAndFastGUI - библиотека для создания графических интерфейсов
EasyAndFastGUI - библиотека для создания графических интерфейсов
  • www.mql5.com
Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ.
 
Anatoli Kazharski #:
コミュニティからの反応がこれほど弱いのは不思議だ。もう誰もグラフィカル・インターフェースを必要としていないのだろうか一時はこの話題で熱い議論が交わされたものだ。どうやら仲間はずいぶん減ってしまったようだ。残念なことだ。

今になってようやく、このシリーズのコードを詳しく読む時間を見つけ、嬉しい驚きを覚えた。長い年月を経て、ようやく誰かが成熟し、他の作者によるこれまでのすべての反復の欠点を考慮に入れて、MQLのグラフィカル・インターフェースの開発において新たな進化のラウンドを始めることにしたのだ。

つい最近、MQL開発における長い休止の後、私はEasyAndFastGUI ライブラリの新しいバージョンに取り組み始めましたが、このバージョンはすでにもっと面白いソリューションを実装することを可能にするベースを含んでいるので、MQL開発者のコミュニティにとってそれはすぐに無意味になることがわかりました。

私は、このプロジェクトが最終的に完成し、標準ライブラリのグラフィカルな部分に取って代わることを期待しています。EasyAndFastGUIで 実装されている、私にとって最低限必要なものすべてと、それ以上のものが実現されるのであれば、私は喜んでそれを私のプロジェクトで使用します。

まだやるべきことはたくさんありますが、作者ならやってくれると信じています。

成功だ!

インターフェイスを作る必要があったのだが、よく練られたイベント、相互の位置関係、オーバーラップ、スコープの制限などの点で正しいウィンドウ管理をしているライブラリはひとつもなかった。程度の差はあれ、上記のようなものがどこかにあったとしても、任意の時点でウィンドウを作成したり削除したりプロパティを変更したりすることには問題があった。

これはすべてGUIのバックボーンであるはずだ。なぜすぐに「描画」をやり始めるのかは不明である。

Expert Advisorの現在の記事のソースコードに少し変更を加えてみた:

//--- Создадим объект WinForms Panel
for(int i1=0; i1<2; i1++)
     {
      CPanel *pnl=NULL;
      pnl=engine.CreateWFPanel("WFPanel"+string(i1),50,50,410,200,array_clr,200,true,true,false,-1,FRAME_STYLE_BEVEL,true,false);
      ...
     }

パネルを少し弄ってみたが、結果は以下のようになった:

ウィンドウをフォアグラウンドに切り替えるのは、マウスをクリックしたときであるべきですが、クリックされたときに発生します。

イベントの受信は、おそらくテスターのために作られたインジケータを介して発生し、それなしではイベントが動作しません、テスターでも、テンプレートを介してインジケータをロードするときでさえ....

 
Anatoli Kazharski #:
コミュニティからの反応がこれほど弱いのは不思議だ。もう誰もグラフィカル・インターフェースを必要としていないのだろうか一時はこの話題で熱い議論が交わされたものだ。どうやら仲間はずいぶん減ってしまったようだ。残念なことだ。

今になってようやく、このシリーズのコードを詳しく読む時間を見つけ、嬉しい驚きを覚えた。長い年月を経て、ようやく誰かが成熟し、他の作者によるこれまでのすべての反復の欠点を考慮に入れて、MQLのグラフィカル・インターフェースの開発において新たな進化のラウンドを始めることにしたのだ。

つい最近、MQL開発における長い休止の後、私はEasyAndFastGUI ライブラリの新しいバージョンに取り組み始めましたが、このバージョンはすでにもっと面白いソリューションを実装することを可能にするベースを含んでいるので、MQL開発者のコミュニティにとってそれはすぐに無意味になることがわかりました。

私は、このプロジェクトが最終的に完成し、標準ライブラリのグラフィカルな部分に取って代わることを期待しています。EasyAndFastGUIで 実装されている、私にとって最低限必要なものすべてと、それ以上のものが実現されるのであれば、私は喜んでそれを私のプロジェクトで使用します。

まだやるべきことはたくさんありますが、作者ならやってくれると信じています。

成功だ!
アナトリー、フィードバックをありがとう。もちろん、すべては最終決定されます。
どのような機能が欲しいですか?
フィードバックがとても不足しています。
 
Aliaksandr Hryshyn #:

インターフェイスを作る必要があったのだが、よく練られたイベント、相互の位置関係、オーバーラップ、スコープの制限など、正しいウィンドウ管理ができるライブラリはひとつもなかった。程度の差こそあれ、上記のようなものがどこかにあったとしても、任意の時点でウィンドウを作成したり削除したりプロパティを変更したりすることには問題があった。

これはすべてGUIのバックボーンであるはずだ。なぜ、すぐに「描画」をやり始めるのかは不明である。

Expert Advisorの今回の記事のソースコードを少し変更した:

パネルを少し弄った結果、以下のようになった:

マウスが押されると、ウィンドウがフォアグラウンドに切り替わる。

イベントの受信は、おそらくテスターのためにインジケーターを通して行われます。インジケーターなしでは、テスターでも、テンプレートを通してインジケーターをロードしても、イベントは動作しません。

他のチャートからのイベントのリスニングはindicator-spyを通して実装されています。
もし他に良い方法があればご提案ください。
イベントはテスターではそのままでは動作しません。
不具合をご指摘いただきありがとうございます。まだ開発段階です。
 

他のチャートからのイベントは何のためですか?

私のビジュアルアプリケーションをクリックすると、Expert Advisorが並行して実行され、ログにその旨が記録されます:

2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       Графическая метка "1716653226_u_0": ID 10001, 2022.09.10 22:16:34
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Состояние кнопки: Отжата
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Изменено свойство графического объекта:
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       Графическая метка "1716653226_u_0": ID 10001, 2022.09.10 22:16:34
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Имя BMP-файла:
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)        - Состояние "On" [0]: "\Experts\Greshnik\Strategy_viewer.ex5::1716653226_u_012896816886410156413404032"
2022.09.10 22:18:36.256 TestDoEasy117 (AUDUSD,M1)        - Состояние "Off" [1]: Отсутствует
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       CGStdGraphObj::PropertiesCheckChanged: Создан снимок истории изменений графического объекта #19: 2022.09.09 23:54:59.875
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Изменено свойство графического объекта:
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       Графическая метка "1716653226_u_0": ID 10001, 2022.09.10 22:16:34
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Время создания: 2022.09.10 22:18:38
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Изменено свойство графического объекта:
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       Графическая метка "1716653226_u_0": ID 10001, 2022.09.10 22:16:34
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)       OnChartEvent: Имя BMP-файла:
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)        - Состояние "On" [0]: "\Experts\Greshnik\Strategy_viewer.ex5::1716653226_u_012896816886410156413395097"
2022.09.10 22:18:38.291 TestDoEasy117 (AUDUSD,M1)        - Состояние "Off" [1]: Отсутствует
2022.09.10 22:18:38.959 TestDoEasy117 (AUDUSD,M1)       CGStdGraphObj::PropertiesCheckChanged: Создан снимок истории изменений графического объекта #20: 2022.09.09 23:54:59.875

この目的がわかりません。


カウントに非常に時間がかかります。セル数の多い表はどうなりますか?

グラフィカル・オブジェクトの更新速度の測定:

//--- グラフィック・アイテムのコレクションのイベントを処理する
   ulong mcs=GetMicrosecondCount();
   engine.GetGraphicObjCollection().OnChartEvent(id,lparam,dparam,sparam);
   Print((GetMicrosecondCount()-mcs)/1000.0);

パネルの中央をマウスで左クリック: 5ms

アクティブなタブのヘッダーをクリック:7ミリ秒

非アクティブなタブのヘッダーをクリック: 20 ms


 
Aliaksandr Hryshyn #:

他のチャートは何のためにあるのですか?

ビジュアル・アプリケーションをクリックすると、Expert Advisorが並行して実行されていることがログに記録されています:

この目的がわかりません。


カウントに非常に時間がかかります。セル数の多い表はどうなるのでしょうか?

グラフィック・オブジェクトの更新速度の測定:

パネルの中央をマウスで左クリック: 5 ms

アクティブなタブのヘッダーをクリック: 7 ms

非アクティブなタブのヘッダーをクリック:20 ms


ライブラリーは環境全体をスキャンし、ログに記録されたイベントに関するメッセージを出力 します。現時点では、これらは単なるデバッグ・メッセージであり、ライブラリは開発中です。完全に機能するようになれば、何が必要で何が不要かを選択できるようになるでしょう。

 
Artyom Trishkin #:
アナトリー、フィードバックをありがとう。もちろん、すべては最終決定されます。
どのような機能が欲しいですか?
フィードバックがとても不足しています。

最低限のニーズはEasyAndFastGUIで カバーされています。無償サポートにはあまり時間がないので、最新版をマーケットプレイスで少額でリリースするのもいいかもしれません。

今のままでは、このトピックは無限に発展させることができます。このトピックは無限に発展させることができる。)

この問題については、また改めて触れることにしよう。今はとても忙しい。この調子で頑張ってください!👍

 
Anatoli Kazharski #:

私はEasyAndFastGUIで 最低限のニーズをカバーしています。無料サポートにはあまり時間がないので、おそらくマーケットプレイスで最新版を少額でリリースするでしょう。

このトピックは無限に発展させることができます。このトピックは無限に発展させることができる。)

この質問については、また改めて。今はとても忙しい。この調子で頑張ってください!👍

ドブロ👌さん