MQL로 작성된 UI 갤러리 - 페이지 5

 

이번에도 컨트롤을 테이블에 통합하려는 시도입니다. 이전 시도보다는 성공적이지만 최고와는 거리가 멀었습니다.


 

여기를 클릭하세요....


 

이건 정말 내 마크업 언어인 MQL5로 작성했네요.)))

오늘의 마지막 사진입니다. 내일 계속합니다.


 

인상적입니다. 많은 노력을 기울였습니다!

안타깝게도 타사 개발자가 만든 사용자 인터페이스 요소에 대해 부정적인 경험이 있습니다. 제가 만난 대부분의 창은 특정 모니터 해상도와 Windows 속성에서 100% 스케일링 값에서만 정상적으로 표시되었습니다. 그리고 4K 해상도와 175% 스케일링(제 경우)에서는 컨트롤이 읽을 수 없거나 서로 겹쳤습니다.

그런데 이 문제는 메타에디터에 포함된 UI 클래스의 도움으로 만든 창에도 적용됩니다.

창을 만들 때 항상 Windows 설정에서 다양한 화면 해상도와 배율 값에서 창이 어떻게 보이는지 확인하시나요?

 
E38 컨트롤이 읽을 수 없거나 서로 겹쳤습니다.

그런데 이 문제는 메타에디터 패키지에 포함된 UI 클래스의 도움으로 생성된 창에도 적용됩니다.

창을 만들 때 항상 Windows 설정에서 다양한 화면 해상도와 배율 값에서 창이 어떻게 보이는지 확인하시나요?

감사합니다.
이 UI를 개발할 당시에는 4K 포맷이 새롭고 신선했으며 요즘처럼 널리 보급되지 않았기 때문에 이러한 문제가 존재하지 않았습니다. 더 정확히 말하면, 아무도 4K에 대해 언급하지 않았기 때문에 4K의 비용에 대해 알지 못했습니다. 하지만 이 문제가 발생했더라도 MQL 수준에서는 해결할 수 없었을 것입니다. 아마도 MQ 개발자가 적절한 솔루션을 찾고 언어와 터미널을 업그레이드할 때까지 사용자에게 표준 모니터를 사용하라고 조언했을 것입니다. 그리고 나서 그래픽을 업그레이드했을 것입니다.

하지만 그렇게 되지 않았습니다).

추가되었습니다:

다른 화면 해상도에서 창과 패널이 어떻게 보이는지 확인하는 것에 대해서는 내 UI 사용자들 사이에서 불만과 언급이 거의 없었기 때문에 일부러 그러한 검사를 수행하지 않았습니다. 아마도 문제가 발견되었을 수도 있지만, 다시 말하지만 MQL 수준에서는 거의 해결되지 않았습니다.
 
Реter Konow #:
고마워요.
이 UI를 개발할 당시에는 4K 포맷이 지금처럼 널리 보급되지 않은 새롭고 신선한 포맷이었기 때문에 이 문제가 존재하지 않았습니다. 더 정확히 말하면, 아무도 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() . В качестве параметра эти...