错误、漏洞、问题 - 页 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-order。

我看到,工具提示出现了。


我已经手动创建了一个矩形(一个与价格挂钩的矩形,而不是OBJ_RECTANGLE_LABEL)。

我已经从一个类似的脚本中改变了z-order。

我看到,工具提示出现了


所以有件事你没有说

 
Slava:

手工创建了一个水平线的图形对象。

改变了脚本中的Z字形顺序

我看到,工具提示出现了。


我手动创建了一个矩形图形对象(一个与价格挂钩的矩形--次数,不是OBJ_RECTANGLE_LABEL)。

我已经从一个类似的脚本中改变了z-order。

我看到,工具提示出现了。


所以有件事你没有说。

好吧,再仔细检查一下。

在构建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:

当我不能用LKM取消选择图线时,我应该怎么做?它妨碍了...

 
Alexey Kozitsyn:

这似乎是关于ChartRedraw()。当你在工作中勾出一个矩形,并在其上交替按下左键和Z键时,它发挥得更好。这样一来,这个物体就成了 "死物"。如果你以后再创建一个矩形,那也没问题。

这是我的专家,在此基础上我又检查了一遍

//+------------------------------------------------------------------+
//|                                                   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:

当我不能用LKM取消选择图线时,我应该怎么做?它干扰了...

你说你不能是什么意思?

给我讲讲细节!

 
Slava:

你什么意思,你不能?

给我讲讲细节!

鸭子...在这里...正在试验前一个帖子中的指标。而且......有东西坏了。这样一来,现在当你创建一条山形线时,它就被选中了,而且这个选择不能通过用鼠标双击山形线来删除。我无法闭嘴--选择不能被删除。在任何图上,即使是空图。