程序库: 用于创建图形界面的 EasyAndFastGUI 开发库 - 页 19

 
When I use CTreeView for MQL5 with ShowItemContent(false), it has a stop error: array out of range in 'TreeView.mqh' (1725,22). This is in function "void CTreeView::UpdateContentList(void)". If  ShowItemContent(false), the item content is not created during initialization, but m_content_items[li].Update(true) is used without checking m_show_item_content flag. Then I modified code of function "void CTreeView::UpdateContentList(void)" as below:
//+------------------------------------------------------------------+
//| Обновляет список содержания                                      |
//+------------------------------------------------------------------+
void CTreeView::UpdateContentList(void)
  {
//--- Exit if (1) content does not need to be displayed or (2) Label mode is enabled
   if(!m_show_item_content || m_tab_items_mode)
      return;
//---
   int items_total=::ArraySize(m_cd_list_index);
   for(int i=0; i<items_total; i++)
     {
      //--- Получим общий индекс пункта в списке
      int li=m_cd_list_index[i];
      //--- Обновим
      m_content_items[li].Update(true);
     }
  }
Am I right? And can you please confirm it? Thank you very much!

 
当我使用带有 ShowItemContent(false) 的 CTreeView for MQL5 时,会出现停止错误:'TreeView.mqh' (1725,22) 中的数组超出范围。这是在函数 "void CTreeView::UpdateContentList(void) "中。如果 ShowItemContent(false),则在初始化时不会创建项目内容,而是使用 m_content_items[li].Update(true),而不检查 m_show_item_content 标志。然后我修改了函数 "void CTreeView::UpdateContentList(void) "的代码,如下所示:
//+------------------------------------------------------------------+
//| Обновляет список содержания|
//+------------------------------------------------------------------+
void CTreeView::UpdateContentList(void)
  {
//--- 如果 (1) 不需要显示内容或 (2) 启用了标签模式,则退出
   if(!m_show_item_content || m_tab_items_mode)
      return;
//---
   int items_total=::ArraySize(m_cd_list_index);
   for(int i=0; i<items_total; i++)
     {
      //--- Получим общий индекс пункта в списке
      int li=m_cd_list_index[i];
      //--- Обновим
      m_content_items[li].Update(true);
     }
  }
我这样做对吗?能否请您确认一下?非常感谢!
 
我从https://www.mql5.com/zh/code/19703 下载了该库。当我使用 CTextEdit 显示只读文本时,当字数较多时,scrollV 和 scollH 不会出现。有人遇到过这个问题吗?谢谢。
用于创建图形界面的 EasyAndFastGUI 开发库
用于创建图形界面的 EasyAndFastGUI 开发库
  • www.mql5.com
EasyAndFastGUI 开发库可以为自定义 MQL 程序创建图形界面。
 

10 月 4 日更新后,该库在许多地方返回了警告:

"已废弃的行为,隐藏方法调用将在未来的 MQL 编译器版本中禁用 Element.mqh 379 26 "

"已废弃的行为,未来的 MQL 编译器版本将禁用隐藏方法调用 Scrolls.mqh 625 15 "

"已废弃的行为,在未来的 MQL 编译器版本中将禁用隐藏方法调用 TextBox.mqh 1845 14 "

"已废弃的行为,未来的 MQL 编译器版本将禁用隐藏方法调用 WndEvents.mqh 298 36 "


......有人能帮助解决这个问题吗,或者能解释一下这个警告是什么意思吗......什么是隐藏方法?)

问候

 
问:有没有办法从 STechtEdit 字段中复制所选文本
 
Marcin Rutkowski:

10 月 4 日更新后,图书馆正在多处退还警告:

"已过时的行为,隐藏方法调用将在未来的 MQL 编译器版本 Element.mqh 379 26 中禁用"。

"已废弃的行为,隐藏方法调用将在未来的 MQL 编译器版本中禁用 Scrolls.mqh 625 15 "

"已废弃的行为,在未来的 MQL 编译器版本中将禁用隐藏方法调用 TextBox.mqh 1845 14 "

已废弃的行为,在未来的 MQL 编译器版本中将禁用隐藏方法调用 WndEvents.mqh 298 36 " "


......有谁能帮助我们解决这个问题,或者解释一下这个警告是什么意思?什么是隐藏方法?)

问候



CElement::Update(true)

CElementBase::IsLocked()

CElementBase:: IsVisible()

CElementBase:: IsAvailable()

 
Mikhail Sergeev:



CElement::Update(true)

CElementBase::IsLocked()

CElementBase:: IsVisible()

CElementBase:: IsAvailable()

你好......感谢您的回复......我不认为自己是初学者,但我远不是专家:)

关于您的回复 ....example from file Element.mqh ...

来自错误日志 :

已废弃的行为,隐藏方法调用将在未来的 MQL 编译器版本中禁用 Element.mqh 379 26


双击后,我被引导到下面的代码,光标位置被注释为 [cursor] 。


void CElement::IsLocked(const bool state)
  {
//--- Выйти, если уже установлено
   if(state==CElementBase::IsLocked())
      return;
//--- Сохранить состояние
   CElementBase::IsLocked(state);
//--- Остальные элементы
   int elements_total=ElementsTotal();
   for(int i=0; i<elements_total; i++)
      m_elements[i].IsLocked(state);
//--- Проверка указателя
   if(::CheckPointer(m_main)==POINTER_INVALID)
      return;
//--- Событие отправляет только главный элемент составной группы
   if(this.Id()!=m_main.Id())
     {
      ::EventChartCustom(m_chart_id,ON_SET_LOCKED,CElementBase::Id(),(int)state,"");
      //--- Отправим сообщение об изменении в графическом интерфейсе
      ::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");
     }
   else
     {
      if(state != m_main.IsLocked())                                                        // <<<<< 错误指向这一行,而我仍然无法找到 "隐藏方法是什么"。
// if(state != m_main.[cursor]IsLocked()) // 游标位置 
       {
         ::EventChartCustom(m_chart_id,ON_SET_LOCKED,CElementBase::Id(),(int)state,"");
         //--- Отправим сообщение об изменении в графическом интерфейсе
         ::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");
        }
     }
  }

如果您能解释如何解决这个问题,我就能解决其他问题 :) (或告诉我 "隐藏方法 "是什么)......再次感谢您

 
Mikhail Sergeev:



CElement::Update(true)

CElementBase::IsLocked()

CElementBase:: IsVisible()

CElementBase:: IsAvailable()

Finlay 在我脑中一闪而过:)......现在一切都好了......再次感谢并致以问候
 

deprecated behavior, hidden method calling will be disabled in a future MQL compiler version WndEvents.mqh 1761 53

 
Marcin Rutkowski:
Finlay 它在我脑中一闪而过:)......现在一切都好了......再次感谢您并致以问候
你好,
,我还没明白。怎么办?