文章 "如何创建任意复杂度的图形面板" - 页 11

 
Vladimir Karputov:

必须重新绘制面板的所有元素,这样它们才会占据 "顶部 "位置。

我明白了,谢谢!CAppDialog 类是否有重绘所有元素的内置方法?如果没有,那么在后续类中实现它是否正确?

void CControlsDialog::Redraw(void)
  {
   this.Visible(false);
   this.Visible(true);
  }

在实践中是可行的,我检查过了。

 
Janis Ozols:

我明白了,谢谢!CAppDialog 类是否有重绘所有元素的内置方法?如果没有,那么在后继类中实现它是否正确?

我检查过了,实际上是可行的。

可能还有其他变体--但它应该可以工作,因为隐藏面板应该再次重绘--所以它的所有元素都将在顶部。

 
Janis Ozols:

我明白了,谢谢!CAppDialog 类是否有重绘所有元素的内置方法?如果没有,那么在后继类中实现它是否正确?

我检查过了,实际上是可行的。

在我的记忆中,Run() 方法会重绘图表。
 
Vasiliy Pushkaryov:
在我的记忆中,Run() 方法会重绘图表。

是的,它会重绘图表。谢谢,我试试看!

bool CAppDialog::Run(void)
  {
//--- 重新绘制图表,使对话无效
   m_chart.Redraw();
//--- 这里我们开始为控件分配 ID
   if(Id(m_subwin*CONTROLS_MAXIMUM_ID)>CONTROLS_MAXIMUM_ID)
     {
      Print("CAppDialog: too many objects");
      return(false);
     }
//--- 成功
   return(true);
  }

更新:我试过了。唉,没用。显然,这种方法重绘的是图表本身,而不是面板。
 

大家好

首先,感谢Vladimir Karputov 分享这篇文章。

我是设计面板的新手。

我想确认一下,是否可以像图表一样解锁这个面板。

如果可以,我在哪里可以找到这种方法?

Vladimir Karputov
Vladimir Karputov
  • 2021.09.01
  • www.mql5.com
Trader's profile
 
Quan tum # :

***

我想确认一下,是否可以像图表一样解锁这个面板。

如果可以,我在哪里可以找到方法?

我不明白。

 
Vladimir Karputov #:

我不明白。

在 MT5 中,我们可以在图表上点击鼠标右键,然后就会看到 "停靠"。(在附件中)

如果我们点击它,图表窗口将独立于平台之外。这意味着 "非停靠"。

因此,我想确认面板是否也能做到独立于图表?谢谢。

附加的文件:
 
Quan tum # :

在 MT5 中,我们可以在图表上单击鼠标右键,就会看到 "停靠"。(在附件中)

如果我们点击它,图表窗口将独立于平台之外。这意味着取消停靠。

因此,我想确认面板是否也能做到独立于图表?谢谢。

你自己回答了自己的问题:你自己选择了当前图表窗口的菜单。这与面板有什么关系?

 
Vladimir Karputov #:

你自己回答了自己的问题:你自己选择了当前图表窗口的菜单。这与面板有什么关系?

对不起,也许是我让您误解了。
我的意思是,是否可以将面板从图表中移除。
 
Quan tum # :
对不起,也许我让您误会了。
我的意思是,能否将面板从海图上移开。

这是禁止的。面板与图表相连。