오류, 버그, 질문 - 페이지 2701

 
Slava :
첫 번째 직사각형과 두 번째 직사각형의 대략적인 좌표는? 그들은 동일합니까?
첫 번째 사각형은 배경입니다. 그냥 배경입니다. 전체 화면에서.
두 번째 사각형은 열입니다. 첫 번째 직사각형에 있습니다.
내일 다 보여드리도록 노력하겠습니다.
 
Slava :

재생할 수 없습니다.

플레이할 단계를 주지 않았습니다.

뭐 했어?

확인. 다시.

1. 사각형과 같은 그래픽 개체를 만듭니다 . 손으로 만들기;

2. 프로그래밍 방식으로 OBJPROP_ZORDER 속성을 1로 변경합니다.

3. 내가 설명한 넌센스를 얻으십시오.

키 입력에서 속성을 변경하는 코드는 다음과 같습니다.

 if ( lparam == KEY_Z )
{
//--- Получаем свойство приоритета клика
int zorder = ( int ) ObjectGetInteger ( 0 , _name, OBJPROP_ZORDER );
//--- Меняем свойство приоритета клика
zorder = ( zorder == 0 ) ? 1 : 0 ;
//--- Устанавливаем новое свойство приоритета
ObjectSetInteger ( 0 , _name, OBJPROP_ZORDER , zorder );
} 
_name 개체의 이름은 이전에 차트에서 개체를 선택(마우스 클릭)하여 저장했습니다.
 
Alexey Kozitsyn :

뭐 했어?

확인. 다시.

1. 사각형과 같은 그래픽 개체를 만듭니다 . 손으로 만들기;

2. 프로그래밍 방식으로 OBJPROP_ZORDER 속성을 1로 변경합니다.

3. 내가 설명한 넌센스를 얻으십시오.

키 입력 시 속성을 변경하는 코드는 다음과 같습니다.

_name 개체의 이름은 이전에 차트에서 개체를 선택(마우스 클릭)하여 저장했습니다.

손으로 수평선의 그래픽 개체를 만들었습니다.

스크립트에서 프로그래밍 방식으로 z 순서 변경

툴팁이 표시되는 것을 확인할 수 있습니다.


내 손으로 사각형 그래픽 개체를 만들었습니다(즉, OBJ_RECTANGLE_LABEL이 아니라 가격에 연결된 사각형).

유사한 스크립트에서 프로그래밍 방식으로 변경된 z 순서

툴팁이 나오는 걸 보니


그래서 당신은 뭔가를 놓쳤다

 
Slava :

손으로 수평선의 그래픽 개체를 만들었습니다.

스크립트에서 프로그래밍 방식으로 z 순서 변경

툴팁이 표시되는 것을 확인할 수 있습니다.


내 손으로 사각형 그래픽 개체를 만들었습니다(즉, OBJ_RECTANGLE_LABEL이 아니라 가격에 연결된 사각형).

유사한 스크립트에서 프로그래밍 방식으로 변경된 z 순서

툴팁이 나오는 걸 보니


그래서 당신은 뭔가를 놓쳤다

알겠습니다. 다시 확인하겠습니다.

빌드 2361 확인하셨나요?

업데이트되었습니다.

재확인했습니다. 문제가 남아 있습니다.

이것을 시도하십시오: 내 표시기를 사용하여 TF M1에 직사각형( OBJ_RECTANGLE )을 만드십시오. 마우스로 클릭한 다음 z를 여러 번 누릅니다. 로그에서 zorder가 -1, 0, 1이 된 것을 볼 수 있습니다. 그런 다음 이 직사각형을 지나는 차트를 클릭하십시오. 그런 다음 도구 설명을 보고 선택하십시오.

아마도 문제는 개체 zorder = -1을 설정하는 것입니다. 그 전에는 값 1에 문제가 있다고 생각했습니다. 죄송합니다.

파일:
 
Alexey Kozitsyn :

재확인했습니다. 문제가 남아 있습니다.

다음과 같이 시도하십시오.

지금 산. 선은 기본적으로 선택되어 생성됩니다(마우스 클릭으로 선택 취소할 수 있는 옵션 없음) + 차트에서 도구 설명 강조 표시 없음... 문제가 발생했습니다. 지표는 더 이상 차트에 없습니다 .

 
Alexey Kozitsyn :

알겠습니다. 다시 확인하겠습니다.

빌드 2361 확인하셨나요?

업데이트되었습니다.

재확인했습니다. 문제가 남아 있습니다.

이것을 시도하십시오: 내 표시기를 사용하여 TF M1에 직사각형( OBJ_RECTANGLE )을 만드십시오. 마우스로 클릭한 다음 z를 여러 번 누릅니다. 로그에서 zorder가 -1, 0, 1이 된 것을 볼 수 있습니다. 그런 다음 이 직사각형을 지나는 차트를 클릭하십시오. 그런 다음 도구 설명을 보고 선택하십시오.

아마도 문제는 개체 zorder = -1을 설정하는 것입니다. 그 전에는 문제가 값 1에 있다고 생각했습니다.

ChartRedraw()에 관한 것 같습니다. 작업할 직사각형을 연결하고 왼쪽 클릭과 z를 혼합하면 더 잘 재생됩니다. 따라서 이 개체는 "죽은" 상태가 됩니다. 나중에 다른 직사각형을 만드는 경우 - 모든 규칙.

 
Slava :

LMB가 산을 선택 해제할 수 없는 경우 수행할 작업. 그래프 라인? 방해하다...

 
Alexey Kozitsyn :

ChartRedraw()에 관한 것 같습니다. 작업할 직사각형을 연결하고 왼쪽 클릭과 z를 혼합하면 더 잘 재생됩니다. 따라서 이 개체는 "죽은" 상태가 됩니다. 나중에 다른 직사각형을 만드는 경우 - 모든 규칙.

여기 내 Expert Advisor가 있습니다. 다시 확인했습니다.

 //+------------------------------------------------------------------+
//|                                                   TestZOrder.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

#define OBJECT_NAME1 "RectangleLabel1"
#define OBJECT_NAME2 "RectangleLabel2"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   ObjectCreate ( 0 ,OBJECT_NAME1, OBJ_RECTANGLE_LABEL , 0 , 0 , 0 );
   ObjectSetInteger ( 0 ,OBJECT_NAME1, OBJPROP_XDISTANCE , 100 );
   ObjectSetInteger ( 0 ,OBJECT_NAME1, OBJPROP_YDISTANCE , 100 );
   ObjectSetInteger ( 0 ,OBJECT_NAME1, OBJPROP_XSIZE , 300 );
   ObjectSetInteger ( 0 ,OBJECT_NAME1, OBJPROP_YSIZE , 200 );
   ObjectSetInteger ( 0 ,OBJECT_NAME1, OBJPROP_BGCOLOR , clrNONE );
   ObjectSetInteger ( 0 ,OBJECT_NAME1, OBJPROP_BORDER_TYPE , BORDER_FLAT );
   ObjectSetString ( 0 ,OBJECT_NAME1, OBJPROP_TOOLTIP ,OBJECT_NAME1);
//---
   ObjectCreate ( 0 ,OBJECT_NAME2, OBJ_RECTANGLE_LABEL , 0 , 0 , 0 );
   ObjectSetInteger ( 0 ,OBJECT_NAME2, OBJPROP_XDISTANCE , 250 );
   ObjectSetInteger ( 0 ,OBJECT_NAME2, OBJPROP_YDISTANCE , 120 );
   ObjectSetInteger ( 0 ,OBJECT_NAME2, OBJPROP_XSIZE , 250 );
   ObjectSetInteger ( 0 ,OBJECT_NAME2, OBJPROP_YSIZE , 150 );
   ObjectSetInteger ( 0 ,OBJECT_NAME2, OBJPROP_BGCOLOR , clrNONE );
   ObjectSetInteger ( 0 ,OBJECT_NAME2, OBJPROP_BORDER_TYPE , BORDER_FLAT );
   ObjectSetString ( 0 ,OBJECT_NAME2, OBJPROP_TOOLTIP ,OBJECT_NAME2);
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   ObjectDelete ( 0 ,OBJECT_NAME1);
   ObjectDelete ( 0 ,OBJECT_NAME2);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id,
                   const long &lparam,
                   const double &dparam,
                   const string &sparam)
  {
//---
   if (id== CHARTEVENT_OBJECT_CLICK )
     {
       long zorder= ObjectGetInteger ( 0 ,sparam, OBJPROP_ZORDER );
       PrintFormat ( "%s object clicked  lparam=%I64d  dparam=%.16g  zorder=%I64d" ,sparam,lparam,dparam,zorder);
      zorder= 1 -zorder;
       ObjectSetInteger ( 0 ,sparam, OBJPROP_ZORDER ,zorder);
      zorder= ObjectGetInteger ( 0 ,sparam, OBJPROP_ZORDER );
       PrintFormat ( "%s zorder set to %I64d" ,sparam,zorder);
     }
  }
//+------------------------------------------------------------------+

모든 것이 정상이며 툴팁은 zorder에 따라 표시됩니다.

 
Alexey Kozitsyn :

LMB가 산을 선택 해제할 수 없는 경우 수행할 작업. 그래프 라인? 방해하다...

당신이 할 수 없습니다은 무슨 뜻인가요?

자세한 내용을 알아보자!

 
Slava :

당신이 할 수 없습니다은 무슨 뜻인가요?

자세한 내용을 알아보자!

오리... 여기... 이전 포스트에서 지표로 실험해 봤습니다. 그리고... 뭔가 고장났습니다. 이제 산을 만들 때 어떻게 될까요? 라인이 선택되고 이 선택은 마우스로 라인을 두 번 클릭하여 제거할 수 없습니다. 닥쳐 - 선택 항목이 제거되지 않습니다. 어떤 차트에서도 비어 있습니다.