诚信为本
量力而为
当前位置:ea编程网 EA知识 正文

图表事件处理与自定义事件

在图表操作中,有9种可以通过预定义函数OnChartEvent()处理的事件。对于自定义事件,提供了65535个标识符,范围从CHARTEVENT_CUSTOM到CHARTEVENT_CUSTOM_LAST。要生成自定义事件,请使用EventChartCustom()函数。

以下是这9种事件的一些详细说明,以及一些示例代码。

事件类型:

  1. CHARTEVENT_KEYDOWN:键盘按键事件
  2. CHARTEVENT_MOUSE_MOVE:鼠标移动事件和鼠标点击事件(如果CHART_EVENT_MOUSE_MOVE=true为图表设置)
  3. CHARTEVENT_OBJECT_CREATE:创建图形对象事件(如果CHART_EVENT_OBJECT_CREATE=true为图表设置)
  4. CHARTEVENT_OBJECT_CHANGE:通过属性对话框更改图形对象属性的事件
  5. CHARTEVENT_OBJECT_DELETE:删除图形对象事件(如果CHART_EVENT_OBJECT_DELETE=true为图表设置)
  6. CHARTEVENT_CLICK:图表上的点击事件
  7. CHARTEVENT_OBJECT_CLICK:图形对象上的点击事件
  8. CHARTEVENT_OBJECT_DRAG:图形对象的拖放事件
  9. CHARTEVENT_OBJECT_ENDEDIT:图形对象编辑框中的文本编辑结束事件
  10. CHARTEVENT_CHART_CHANGE:图表大小变化或通过属性对话框修改图表属性的事件
  11. CHARTEVENT_CUSTOM:自定义事件范围的初始编号
  12. CHARTEVENT_CUSTOM_LAST:自定义事件范围的最终编号

每种事件的输入参数的OnChartEvent()函数都有明确的值,对于处理该事件是必需的。通过这些参数传递的事件和值在下表中列出。

以下是一个代码示例,展示了如何使用预定义的OnChartEvent()函数来处理不同类型的事件。在这个示例中,我们打印了每个事件发生时的相关信息。

int OnInit() 
{ 
  // 启用对象创建事件
   ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true); 
  // 启用对象删除事件
   ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_DELETE, true); 
   return(INIT_SUCCEEDED); 
} 

void OnChartEvent(const int id,         // 事件标识符
                  const long& lparam,   // 长类型的事件参数
                  const double& dparam, // 双类型的事件参数
                  const string& sparam) // 字符串类型的事件参数
{ 
   if(id == CHARTEVENT_CLICK) 
   { 
      Print("鼠标点击图表的坐标:x = ", lparam, "  y = ", dparam); 
   } 

   if(id == CHARTEVENT_OBJECT_CLICK) 
   { 
      Print("鼠标点击名为 '" + sparam + "' 的对象"); 
   } 

   if(id == CHARTEVENT_OBJECT_DELETE) 
   { 
      Print("名为 ", sparam, " 的对象已被删除"); 
   } 

   if(id == CHARTEVENT_OBJECT_CREATE) 
   { 
      Print("名为 ", sparam, " 的对象已被创建"); 
   } 

   if(id == CHARTEVENT_OBJECT_DRAG) 
   { 
      Print("名为 ", sparam, " 的对象的锚点坐标已更改"); 
   } 

   if(id == CHARTEVENT_OBJECT_ENDEDIT) 
   { 
      Print("名为 ", sparam, " 的对象的编辑框中的文本已更改"); 
   } 
}

对于CHARTEVENT_MOUSE_MOVE事件,sparam字符串参数包含有关键盘和鼠标按钮状态的信息:

位 描述
1 左键状态
2 右键状态
3 SHIFT键状态
4 CTRL键状态
5 中键状态
6 第一个额外的鼠标按钮状态
7 第二个额外的鼠标按钮状态

请注意,这里提供的示例代码仅作为说明。在实际应用中,可以根据需要调整代码来适应特定的需求。

未经允许不得转载:ea编程网 » 图表事件处理与自定义事件