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

 
EasyAndFast 图形用户界面错误

MT4 版本。

Experts\Article09\TestLibrary03

编辑器总是闪烁。

Anatoli Kazharski 请帮助解决这个错误。

https://www.mql5.com/en/forum/274301


EasyAndFast GUI bug
EasyAndFast GUI bug
  • 2018.08.20
  • www.mql5.com
I download the library of the last MT4 version https://www.mql5.com/en/code/19703 Experts\Article09\TestLibrary03 The Edit is always flickering...
 
Oleksii Chepurnyi:

下午好。

更大的问题)

创建一个动态对象,例如一个标签

...

我还没有测试过动态对象创建 库,所以现在不能给你任何建议。

 

使用该库创建图形用户界面的另一个应用程序示例:


 
greentreen:

MT4 版本。

不幸的是,我现在帮不上忙,因为它不再适用于 MT4。该版本的库仅在 MT5 上进行过测试。

 
Anatoli Kazharski:

我还没有测试过动态对象创建 库,所以现在不能给你建议。

我想也是:)

对于简单对象,我是这样写的

//+------------------------------------------------------------------+
//|| 从元素数组中移除一个指针
//+------------------------------------------------------------------+
void CWndContainer::DeleteElementsFromArray(const int window_index,const int id)
  {
   int windows_total=::ArraySize(m_windows);
//--- 如果数据库中没有控件表单
   if(windows_total<1)
     {
      ::Print(__FUNCTION__," > 没有一种形式"。);
      return;
     }
//--- 如果请求针对的是不存在的表单
   if(window_index>=windows_total)
     {
      ::Print(PREVENTING_OUT_OF_RANGE," window_index: ",window_index,"; windows total: ",windows_total);
      return;
     }
//--- 从公共数组中删除元素
   DeleteElement(id,m_wnd[window_index].m_elements);
//--- 删除数组中的主要元素
   DeleteElement(id,m_wnd[window_index].m_main_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_timer_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_available_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_auto_x_resize_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_auto_y_resize_elements);
  }
//+------------------------------------------------------------------+
//|| 从元素数组中移除一个指针
//+------------------------------------------------------------------+
template<typename T>
void CWndContainer::DeleteElement(const int id,T &array[])
  {
   bool del=false;
   for(int i=0;i<ArraySize(array);i++)
     {
      if(del)
        {
         if(i==ArraySize(array)-1) break;
         array[i] = array[i+1];
         continue;
        }
      if(array[i].Id()==id)
        {
         del=true;
         if(i==ArraySize(array)-1) break;
         array[i] = array[i+1];
        }
     }
   if(del) ArrayResize(array,ArraySize(array)-1,RESERVE_SIZE_ARRAY);
  }
//+------------------------------------------------------------------+
 

您能告诉我,在表格中,带图片的按钮只在第一列中添加,而在其他列中不起作用。

这是不是一个错误?

 
Vladimir Ananich:

在表格中,带图片的按钮只在第一列中添加,在其他列中不起作用。

您可以添加到所有列中。

 
Anatoli Kazharski:

您可以添加到所有内容中。

谢谢,我明白了。

但奇怪的是,如果单元格中的对齐方式设置为居中或居右,图片就不可见。

如果对齐方式是左对齐,则工作正常。

 
Vladimir Ananich:

谢谢,我拿到了。

但奇怪的是,如果将单元格中的对齐方式设置为居中或右边,就看不到图片了。

如果是在左边缘,则工作正常。

是的,现在有这样的限制(只能在左边缘)。