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

 

今回もコントロールをテーブルに統合する試みである。以前の試みよりは成功しているが、ベストにはほど遠い。


 

明らかに次の段階に進んでいる......。


 

これは本当にMQL5のマークアップ言語で書かれているんだ。)

本日最後の写真。続きは明日。


 

感動的だ。多くの仕事がなされている!

残念なことに、私はサードパーティーの開発者が作成したユーザーインターフェイス要素について否定的な経験を持っている。私が遭遇したウィンドウの大半は、Windowsのプロパティで特定のモニター解像度と100%のスケーリング値でのみ正常に表示された。そして、4K解像度と175%のスケーリング(私の場合)では、コントロールが 読めなくなったり、重なり合ったりした。

ちなみに、これはMetaEditorに含まれるUIクラスの助けを借りて作成したウィンドウにも当てはまります。

ウィンドウを作成するとき、Windowsの設定で異なる画面解像度とスケーリング値でどのように見えるかを常にチェックしていますか?

 
E38 コントロールが 読めなくなったり、互いに重なったりした。

ちなみに、これはMetaEditorパッケージに含まれるUIクラスの助けを借りて作成されたウィンドウにも当てはまります。

ウィンドウを作成するとき、Windowsの設定で異なる画面解像度とスケーリング値でどのように見えるかを常にチェックしていますか?

ありがとうございます。
このUIを開発した当時は、4Kフォーマットが新しく新鮮で、現在のように普及していなかったので、そのような問題は存在しませんでした。より正確には、誰も話題にしなかったので、私は4Kのコストについて知らなかったのだ。しかし、この問題に遭遇したとしても、MQLレベルでは解決できなかっただろう。おそらく、MQの開発者が適切な解決策を見つけ、言語と端末をアップグレードするまで、標準モニターを使うようユーザーにアドバイスしただろう。そしてその後、彼はグラフィックをアップグレードしただろう。

しかし、そうはならなかった)。

追記:

異なる画面解像度でウィンドウやパネルがどのように見えるかをチェックすることについてだが、私のUIを使用している数少ないユーザーの間で苦情や指摘がなかったため、意図的にそのようなチェックはしなかった。おそらく問題は見つかっただろうが、やはりMQLレベルではほとんど解決しなかった。
 
Реter Konow #:
ありがとう。
このUIが開発された当時、4Kフォーマットは新しく新鮮で、現在のように普及しておらず、この問題は存在しなかった。より正確には、誰も話題にしなかったので、私は4Kのコストについて知らなかった。しかし、仮に私がこの問題に遭遇したとしても、MQLレベルでは解決できなかっただろう。おそらく、MQの開発者が適切な解決策を見つけ、言語と端末をアップグレードするまで、標準のモニターを使うようユーザーにアドバイスしただろう。そしてその後、彼はグラフィックをアップグレードしただろう。

しかし、そうはならなかった)。

追記:

異なる画面解像度でウィンドウやパネルがどのように見えるかをチェックすることについてだが、私のUIを使用している数少ないユーザーの間で苦情や指摘がなかったため、意図的にそのようなチェックはしなかった。おそらく問題は見つかっただろうが、やはりMQLレベルではほとんど解決しなかった。
ターミナルのプロパティには長い間モニターのDPIがあり、ヘルプにはグラフィカル・オブジェクトのサイズを計算する例がある。
 
Artyom Trishkin #:
端末のプロパティには長い間モニターのDPIがあり、ヘルプにはグラフィックオブジェクトのサイズを計算する例がある。
だから、もしそのような問題に直面したら、簡単に解決できるだろう。しかし、前にも言ったように、私はそれに遭遇していない。私はまだ、出てきた問題の先にある解決策を探すことを学んでいない。)

ちなみに、4K問題の解答例もヘルプに載っている?
 
Реter Konow #:
4K問題の解答例もヘルプに?

どのような問題について話しているのですか?

 
Artyom Trishkin #:

どのような問題について話しているのか?

投稿番号44の問題です。

ところで、あなたが話しているヘルプの解決策が、MEのネイティブUIライブラリに適用されていないのは奇妙です。
 
Реter Konow #:
44番の投稿にあるものだ。

ところで、あなたが話しているヘルプの解決策が、MEのネイティブUIライブラリで適用されていないのは不思議です。

ここ(TERMINAL_SCREEN_DPI)です:

スケーリングファクターの計算

//--- создаём кнопку шириной 1.5 дюйма на экране
int screen_dpi = TerminalInfoInteger(TERMINAL_SCREEN_DPI); // получим DPI монитора пользователя
int base_width = 144;                                      // базовая ширина в экранных точках для стандартных мониторов c DPI=96
int width      = (button_width * screen_dpi) / 96;         // вычислим ширину кнопки для монитора пользователя (с учётом его DPI)
...
 
//--- вычисление коэффициента масштабирования в процентах
int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI) * 100) / 96;
//--- использование коэффициента масштабирования
width=(base_width * scale_factor) / 100;

このように使用すると、解像度の異なるモニター上でも、グラフィックリソースは 目視で同じサイズになります。同時に、制御要素(ボタン、ダイアログウィンドウなど)のサイズは、個人設定に対応します。

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Идентификаторы для получения информации о клиентском терминале функциями TerminalInfoInteger() и TerminalInfoString() . В качестве параметра эти...