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

 

晚上好。

Mouse.mqh。

//+------------------------------------------------------------------+
//| 检查鼠标左键的状态是否发生变化
//+------------------------------------------------------------------+
bool CMouse::CheckChangeLeftButtonState(const string mouse_state)
  {
   bool left_button_state=(bool)int(mouse_state);
//--- 发送有关更改鼠标左键状态的信息
   if(m_left_button_state!=left_button_state)
      ::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- 返回鼠标左键的当前状态
   return(left_button_state);
  }
//+------------------------------------------------------------------+

我们在这里传递 sparam,据我所知,任何非零值都会被视为按下鼠标键。但所有鼠标键,至少加上 Shift 和Control 键,都会给出非零值。

是这样吗?

 
Oleksii Chepurnyi:

晚上好。

Mouse.mqh

我们在这里传递 sparam,据我所知,任何非零值都会被视为按下的鼠标键。但非零值是由所有鼠标按键给出的,至少加上 Shift 和 Control 键。

是这样吗?

不是,这只是为我的自定义任务提供的临时解决方案。

现在在程序库的任何地方似乎都用不到它。如果有必要,还可以改进。

 
Anatoli Kazharski:

不,这只是我定制任务的临时解决方案。

现在库中似乎根本没有使用它。如果需要,可以对它进行改进。

使用频率很高:)例如,窗口拖动、SpinEdit 快速轻扫。任何需要检查 LKM 状态的地方。

我是这样做的

//+------------------------------------------------------------------+
//| 检查鼠标左键的状态是否发生变化
//+------------------------------------------------------------------+
bool CMouse::CheckChangeLeftButtonState(const string mouse_state)
  {
   bool left_button_state=((int)mouse_state==1);
//--- 发送有关更改鼠标左键状态的信息
   if(m_left_button_state!=left_button_state)
      ::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- 返回鼠标左键的当前状态
   return(left_button_state);
  }
//+------------------------------------------------------------------+
 
Anatoli Kazharski:

不,这只是我定制任务的临时解决方案。

现在看来,库中的任何地方都没有用到它。如果需要,可以对其进行改进。

在最新版本中 -https://www.mql5.com/zh/code/19703

无法添加

 //CCanvasTable m_canvas_table;

问题似乎在于我查看的是旧版本中的示例!


class CProgram : public CWndEvents
  {
protected:
   //--- 时间计数器
   CTimeCounter      m_counter1; // 更新执行进程
   CTimeCounter      m_counter2; // 更新状态栏中的项目
   //--- 主窗口
   CWindow           m_window;
   //--- 图片
   CPicture          m_picture1;
   
   //--- 主菜单及其上下文菜单
   CMenuBar          m_menubar;
   CContextMenu      m_mb_contextmenu1;

   //-- 绘制表格
   //CCanvasTable m_canvas_table;
   
   //--- 状态字符串
   CStatusBar        m_status_bar;

 
 

 
EasyAndFastGUI - библиотека для создания графических интерфейсов
EasyAndFastGUI - библиотека для создания графических интерфейсов
  • www.mql5.com
Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ.
 
Yuriy Zaytsev:

在最新版本中 -https://www.mql5.com/zh/code/19703

未能添加

问题似乎在于我查看的是旧版本的示例!


我使用的是 Build 10 版本,https://www.mql5.com/zh/articles/3042!

我不得不这样做,这并不好。

MQL5\Include\EasyAndFastGUI_B10

MQL5/Include/EasyAndFastGUI_B16

Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
  • www.mql5.com
О том, для чего предназначена эта библиотека, более подробно можно прочитать в самой первой статье: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1). В конце статей каждой части представлен список глав со ссылками. Там же есть возможность загрузить к себе на компьютер полную версию библиотеки на текущей стадии разработки...
 

奇妙的库!

我为 MICEX 制作了一个简单但实用的指标。

首先是份额、当天的增长百分比,然后是标准数据、从当天开始的买入量 BuyVol、卖出量 SellVol、从当天开始的成交量差值 VolDelta,我将完成当前成交量差值的百分比。

绿色 delta - 最好持有买入,或尝试寻找买入切入点等。



 
Yuriy Zaytsev:

获得 Build 10 版本,https://www.mql5.com/zh/articles/3042!

我不得不这样做,这并不好。

MQL5\Include\EasyAndFastGUI_B10

MQL5\Include\EasyAndFastGUI_B16.

感谢您的留言。我现在没有时间。我稍后会看看问题出在哪里。

 
Yuriy Zaytsev:

获得 Build 10 版本,https://www.mql5.com/zh/articles/3042!

我不得不这样做,这并不好。

MQL5\Include\EasyAndFastGUI_B10

MQL5/Include/EasyAndFastGUI_B16

库重新设计后,我就不记得版本号了。新版本中很可能没有 CCanvasTable :)

在文章的结论中,有发布时库的总体方案,您可以进行比较。

 
你好

是否无法使用表格函数为一列着色?


如果添加两个指标。

close window 函数关闭两个窗口。
收集窗口函数收集两个窗口。
非常感谢您的帮助。

我来自巴西,是用翻译器写的。如有任何语言错误,我深表歉意。


 
朋友们,你们好
我做了以下更改

在 Table.mqh 文件中

      string            m_header_text;    // 栏头文本
      color             m_header_color;   // 栏头文字颜色 //André
      CTCell            m_rows[];         // 表格行数组

----------------------------------------------------------------------------------------------------------------------
   void              HeadersColorPressed(const color clr)    { m_headers_color_pressed=clr;      }
   //void HeadersTextColor(const color clr){ m_headers_text_color=clr; }//André

----------------------------------------------------------------------------------------------------------
   void              SetHeaderText(const uint column_index,const string value);
   //--- 将彩色文本设置为指定的标题 //André
   void              HeadersTextColor(const color &array[]);
--------------------------------------------------------------------------------------------------------------------
//André 
//+------------------------------------------------------------------+
//| 填充文本对齐方式数组
//+------------------------------------------------------------------+
void CTable::HeadersTextColor(const color &array[])
  {
   int total=0;
//--- 离开,如果传递的是零大小的数组
   if((total=CheckArraySize(array))==WRONG_VALUE)
      return;
//--- 将数值存储到数组中
   for(int c=0; c<total; c++)
      m_columns[c].m_header_color=array[c];
  }
------------------------------------------------------------------------------------------------------------------------
      //André
      //--- 文字颜色
      uint clr=::ColorToARGB(m_columns[c].m_header_color);

在 Window.mqh 文件中

//--- 处理点击表单按钮时的偶发事件
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_BUTTON)
     {
      //André
      if(StringFind(sparam, CElementBase::ProgramName(), 0)<0)
         return;
      //--- 关闭窗口
-------------------------------------------------------------------------------
   int subwin=(CElementBase::ProgramType()==PROGRAM_INDICATOR)? ::ChartWindowFind() : m_subwin;
//--- 发送相关信息
   //André
   //Print(__FUNCTION__, " ", subwin, " ", PROGRAM_NAME);
   //::EventChartCustom(m_chart_id,ON_WINDOW_COLLAPSE,CElementBase::Id(),subwin,"");
   ::EventChartCustom(m_chart_id,ON_WINDOW_COLLAPSE,CElementBase::Id(),subwin, PROGRAM_NAME);
//--- 发送有关图形界面变化的信息
   ::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");
  }
---------------------------------------------------------------------------------------
   int subwin=(CElementBase::ProgramType()==PROGRAM_INDICATOR)? ::ChartWindowFind() : m_subwin;
//--- 发送相关信息
   //André
   //::EventChartCustom(m_chart_id,ON_WINDOW_EXPAND,CElementBase::Id(),subwin,"");
   ::EventChartCustom(m_chart_id,ON_WINDOW_EXPAND,CElementBase::Id(),subwin,PROGRAM_NAME);
//--- 发送有关图形界面变化的信息
   ::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");

在 WndEvents.mqh 文件中。

      return(false);
//--- 如果窗口标识符和子窗口编号匹配
   //André
   if(m_sparam!=m_windows[0].ProgramName()) 
      return(false);
   if(m_lparam==m_windows[0].Id() && (int)m_dparam==m_subwin)


为了便于本地化,我注释掉了带有我名字的行

附件中的文件包含修改后的完整代码。

希望对您有所帮助

附加的文件:
WndEvents.mqh  144 kb
Window.mqh  129 kb
Table.mqh  304 kb