차트의 개체 배치를 더 이상 "수직으로" 제어할 수 없습니다.

 

거의 수치스러운 과거의 소스 텍스트 형식 지정 문제에 대한 논의는 개발자가 프로그래머가 원하는 방식 으로 프로그램을 작성할 수 있는 "권리"를 인식하고(보이는 대로가 아니라) 다음과 같이 약속했다는 사실로 끝났습니다. 원본 텍스트의 서식 설정을 완료합니다.

이제 저도 비슷한 상황에 처하게 되었고 다시 MQL5를 개발하는 분들의 의견을 묻고 싶습니다.

여기에서 시작 하십시오 . 간략하게 이야기는 다음과 같습니다. MQL5의 개체는 생성된 순서대로 차트에 배치됩니다. 가장 먼저 생성된 객체는 맨 아래 객체입니다. 코드에서 실수로 삭제했거나 사용자가 처리한 경우에는 어떤 방법으로도 삭제할 수 없습니다(나머지 개체를 직접 삭제하고 올바른 순서로 다시 만드는 경우 제외). 가장 확실한 예는 텍스트, 입력 필드 및 버튼을 그 위에 배치하기 위해 언더레이를 만든 경우입니다. 이제 삭제하고 생성하면 그 위에 최신 것으로 표시하려는 모든 항목이 포함됩니다.

제안과 함께 서비스 데스크에 연락하여

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

바로 받았습니다...

안톤 티모페예프 2010.05.27 12:27
현재 그리기 순서 규칙은 간단하고 렌더링을 제어하기에 충분합니다. 경우에 따라 이름별로 정렬하면 그리기 순서를 보다 유연하게 제어할 수 있습니다. 포럼에 설명된 특정 작업에 대한 간단한 솔루션(작은 기둥)이지만 모든 사용자는 개체를 추가할 때 이름을 신중하게 고려해야 합니다(whh에서가 아닌 MQL)(큰 빼기).
MT5에서 개체를 오버레이할 때의 그리기 순서는 이미 실제로 사용되고 있습니다(배경, 버튼 등). 그들은 문제에 대해 불평하지 않았습니다. 모든 것이 알고리즘적으로 아주 간단하게 해결되었습니다.

글쎄, 내가 그렇게 말할 수 있다면 솔루션이 "간단하고 렌더링을 제어하기에 충분"하다는 것을 그들에게 의심 할 사람이 있습니까?! :))))

내 말에 :

Forex도구:

다른 사람들이 불평하지 않았다는 사실이 문제가 없다는 것을 의미하지는 않습니다. 아마도 아무도 인터페이스에 대해 정말로 귀찮게하지 않았기 때문일 것입니다.)

대답했다


더듬거리다:

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

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

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

내부 테스트에서 우리는 스스로 많은 것을 엉망으로 만들고 인터페이스와 게임을 모두 작성했습니다. 그리기 순서에는 문제가 없습니다. 순서에 따라 접근 방식을 변경하면 됩니다.

좋은 주장: 미래의 거래 인터페이스에 대한 솔루션은 Tetris 및 Miner 게임에서 디버깅되었습니다. :)))

그리고 마침내 그들의 평결:

이상으로 변경하지 않는 이유를 충분히 자세히 설명드렸습니다. 간단히 반복하겠습니다. 특정 경우의 편의를 위해 다른 모든 경우에 모든 사람의 삶을 복잡하게 만들 수는 없습니다.

상위 4개는 최소한 일종의 차트 개체 배치 순서(객체 이름별)를 가지고 있는 반면 상위 5개는 자체 섞는 카드 데크를 만들고 MQL5 프로그램 작성에 대한 "접근 방식 변경"을 제안합니다.


TOTAL: 동료 코더는 어떻게 생각합니까? 수직으로 개체 배치를 제어할 수 있는 메커니즘이 필요합니까? 세 가지 옵션을 제안했습니다.

1) 이전 - 개체 이름별

2) normal - 각 차트 개체에 Z-order 속성 추가

3) 절차 - 기능 BringToFront, SendToBack, InFrontOf, BehindOf

또는 개발자의 유일한 옵션에 동의하십시오. 삭제의 경우 필요한 순서로 모든(!!!!) 개체를 완전히 다시 그리는 것입니다.

누가 이것에 대해 생각합니까?


 
2)
 
이해가 잘 안됩니다. MT5에서는 그래픽 오브젝트가 오브젝트의 이름이 아닌 생성 시점에 따라 깊이 배열되어 있습니다.
 
Integer >> :
Не совсем понял. В МТ5 графические объекты в глубину располагаются не по имени объекта а по времени создания?
그게 다야! 다음 은 확인하는 간단한 스크립트입니다.
 

ㅋㅋㅋ

나는 2) 또는 적어도 1)

절차상 잘 알고 있습니다.


나는 또한 내

계단식 스타일 시트의 모든 것!!!!!

예, MKL5에 있는 귀하의 제품에는 "훌륭한" 항목이 많이 있습니다.

 

2)

그 문제에 대해 객체의 순서는 생성 시간에 의해 결정되므로 이것은 표시를 위한 마이너스일 뿐입니다.

명백하게 - 이것은 메타쿼터의 문제를 무시하고 간과한 것입니다.

실제로 이름으로 정렬하는 경우 프로그래머는 자신의 재량에 따라 정렬할 수 있는 최소한의 기회가 있습니다.

그리고 생성 날짜와 함께 이 가능성조차 사라졌습니다.

1을 반환해야 하거나 2를 수행하는 것이 좋습니다. 객체의 편리한 속성이 하나 더 추가됩니다.

 

물론 Z 좌표의 경우 OOP의 정신으로 이것을 이해합니다.
나는 2).

 
저는 z-order/z-index를 지지합니다.
 

2) - 최선의 선택.

 

1. 물론 문서화되지 않은 기능에 대해 논의할 수 있습니다. 그리고 이것은 반복적으로 수행되었습니다. 그러나 해결책을 찾기 위해. 문서화되지 않은 행동을 변경하지 않습니다.

2. 우리는 개체의 그리기 순서를 변경하기 위해 더 많은 요청(이 토론의 참가자보다 더 많이)을 받았습니다. 예, 상위 5개 항목 에서 객체가 생성될 때까지 간단하고 자연스러운 순서를 만들었습니다(그러나 이것도 문서화되지 않음). 이제 우리는 무엇을 합니까?

3. 아무것도 하지 마세요! 현재 정렬을 사용하면 이름으로 정렬할 때는 불가능했던 개체 그룹을 간단하게 다시 만들 수 있기 때문입니다.

 

stringo писал(а) >>

현재 정렬을 사용하면 이름으로 정렬할 때는 불가능했던 개체 그룹을 간단하게 다시 만들 수 있기 때문입니다.

사용자가 마우스로 개체를 잡으면 모든 라즈베리가 깨집니다. 이 일정을 고려합니까? 왜 불가능했을까요?