グラフ上のオブジェクトの配置を "垂直" に制御できなくなった

 

最後の、ほとんどスキャンダラスなソースコード書式問題の議論は、プログラマーが自分の 思うようにプログラムを書く「権利」を開発者が認め、ソースコードの書式設定を確定することを約束し、終了した。

今回、同じような状況に遭遇したので、改めてMQL5を開発されている方のご意見を伺いたいと思います。

ここから スタート簡単に説明すると、MQL5のオブジェクトは作成順にチャートに配置される、という話です。最初に作成されるオブジェクトは最下位です。コード中やユーザーによって誤って削除された場合、他の置き方はできなくなります(残りのオブジェクトを削除し、正しい順序で再作成することを除く)。一番わかりやすい例だと、テキストや入力欄、ボタンなどを置くための基板を 作ったとします。今、それを削除して作成すると、その上に表示したいものがすべて最新として網羅されます。

サービスデスクに提案で聞いてみました。

необходимо предусмотреть механизмы произвольной сортировки объектов "по вертикали". Либо наличием свойства Zorder у каждого объекта, либо функциями BringToFront, SendToBack, InFrontOf, BehindOf. Ну или хотябы сделайте так же как было в 4-ке - по имени объекта, т.к. к такому поведению объектов все уже привыкли и ожидают что в 5-ке будет также.

ですぐに手に入れましたが・・・。

アントン・ティモフェーエフ 2010.05.27 12:27
現在の描画シーケンスルールはシンプルであり、描画制御には十分である。名前によるソートは、場合によっては、レンダリング順序をより柔軟に制御することができます。このフォーラムで説明された特定のタスクに対するシンプルなソリューション(小さな欠点)ですが、すべてのユーザーは、(MQL以外のものも含めて)オブジェクトを追加するたびに名前を慎重に検討することを強いられるでしょう(大きな欠点)。
MT5におけるオブジェクトオーバーレイ時の描画シーケンスは、すでに実用化されています(背景、ボタンなど)。問題点を指摘されることもなく、すべてアルゴリズムでシンプルに解決しています。

という、いわば「シンプルで十分なレンダリング制御」のソリューションであることを疑った人はいないはずです。:))))

を私のコメントへ。

ForexTools

他の人が文句を言わないからといって、問題がないわけではありません。おそらく、誰もインターフェイスを気にしていないからでしょう。)

リプライド


ぶらぶらすること。

https://www.mql5.com/ru/articles/64

https://www.mql5.com/ru/articles/65

https://www.mql5.com/ru/code/68

社内でのテストを重ね、インターフェースやゲームも開発しました。レンダリングの順番に問題はなく、順番を意識してアプローチを変えればいいだけです。

良い点:テトリスやマイナーのようなゲームを使って、将来の取引インターフェースのソリューションを磨きました :)))

そして、最下位が彼らの評決です。

上記で、変更を行わない理由をかなり詳細に説明しました。簡単に繰り返しますが、ある特定のケースの利便性のために、それ以外のすべてのケースで他の人の生活を苦しくしてはいけないのです。

F4では少なくともチャートオブジェクトの位置の順序(オブジェクト名による)があったとすれば、5では自ずとパックができ、MQL5プログラムの書き方を「変える」ことを提案したことになるのです。


TOTAL:仲間のコーダーはどう思うか? オブジェクトの配置を垂直にコントロールするメカニズムが必要なのか? 3つのオプションを提案しました。

1) old - 物の名前によるもの

2) 通常 - チャートの各オブジェクトにZ-orderプロパティを追加したもの。

3) 手続き型 - 関数 BringToFront, SendToBack, InFrontOf, BehindOf を使用する。

あるいは、開発者からの唯一の選択肢である、削除された場合、すべての(!!)オブジェクトを必要な順序で完全に再描画することを受け入れるかです。

どなたか、ご意見をお聞かせください。


 
2)
 
よくわからないんです。 MT5では、グラフィカルなオブジェクトはオブジェクト名ではなく、作成時刻で深さ方向に配置されるのですか?
 
Integer >>:
Не совсем понял. В МТ5 графические объекты в глубину располагаются не по имени объекта а по времени создания?
その通りです!チェックするための簡単なスクリプトがここに あります。
 

.

私は2)か、せめて1)に賛成です。

そして、手続き的なものは、誰にもわからない。


また、私独自のバリエーションを提案します。

カスケーディング・スタイルシートを全面的に支持します!!!!

MKL5では、たくさんの "素晴らしい "がありますね。

 

2)

どちらかというと、オブジェクトの順番が作成時刻で決まるというのは、マッピングのデメリットでしかないんです。

unambiguously - これはメタ引用の側の見落としで、問題を無視しています。

結局、名前によるソートの場合、プログラマーは少なくとも自分の判断でソートする機会があるのだ。

そして、その可能性すらも、クリエイション・デイトでは無くしてしまう。

1を返すか、2にしておいた方がいい。それは、オブジェクトに別の便利なプロパティを追加するだけです。

 

もちろん、Z座標については、OOPの精神に則っています。
私は②に賛成です。)

 
私はz順/z順インデックスに賛成です。
 

2) - ベストチョイス。

 

1.もちろん、文書化されていない機能について議論することも可能です。そして、これは何度も行われてきたことです。しかし、解決策を見出すためには文書化されていない動作を変更するためではありません。

2.オブジェクトのレンダリング方法を変更したいという要望は、(この議論の参加者以上に)たくさんありました。はい、Fiveでは、オブジェクトの作成時間 によるシンプルで自然な順序を行いました(ただし、これもドキュメント化されていません)。これからどうする?

3.私たちは何もしない!?なぜなら、現在のソートでは、名前によるソートでは不可能だった、オブジェクトのグループを単純に再作成することができるからです。

 

stringo писал(а) >>

現在のソートと同様に、名前によるソートでは不可能だった、オブジェクトのグループを単純に再作成することができます。

ユーザーがマウスでオブジェクトを保持すると、全体が壊れる。これを考慮しているのでしょうか?なぜ無理だったのか。
理由: