Anatoli Kazharski: 使用 MetaTrader 5。MetaTrader 4 版本已不再支持,我无法为您提供任何建议。
感谢您的回答。(注:我问的是它是否适用于新版本)
以下内容可以吗?
//+------------------------------------------------------------------+ //| Создаёт общую площадь | //+------------------------------------------------------------------+ bool CColorPicker::CreateArea(void) { //--- Формирование имени объекта string name=CElementBase::ProgramName()+"_color_picker_bg_"+(string)CElementBase::Id(); //--- Координаты int x=CElementBase::X(); int y=CElementBase::Y(); //--- Создать объект if(!m_area.Create(m_chart_id,name,m_subwin,x,y,m_x_size,m_y_size)) return(false); //--- Свойства m_area.BackColor(m_area_color); m_area.Color(m_area_border_color); m_area.BorderType(BORDER_FLAT); m_area.Corner(m_corner); m_area.Selectable(false); m_area.Z_Order(m_area_zorder); m_area.Tooltip("\n"); //--- Координаты m_canvas.X(x); m_canvas.Y(y); //--- Размеры m_canvas.XSize(m_x_size); m_canvas.YSize(m_y_size); //--- Отступы от крайней точки m_area.XGap(CElement::CalculateXGap(x)); m_area.YGap(CElement::CalculateYGap(y)); //--- Сохраним указатель объекта CElementBase::AddToArray(m_area); return(true); }
//+------------------------------------------------------------------+ //| Создаёт общую площадь | //+------------------------------------------------------------------+ bool CColorPicker::CreateArea(void) { //--- Формирование имени объекта string name=CElementBase::ProgramName()+"_color_picker_bg_"+(string)CElementBase::Id(); //--- Координаты int x=CElementBase::X(); int y=CElementBase::Y(); //--- Создать объект if(!m_area.Create(m_chart_id,name,m_subwin,x,y,m_x_size,m_y_size)) return(false); //--- Свойства m_area.BackColor(m_area_color); m_area.Color(m_area_border_color); m_area.BorderType(BORDER_FLAT); m_area.Corner(m_corner); m_area.Selectable(false); m_area.Z_Order(m_area_zorder); m_area.Tooltip("\n"); //--- Координаты m_canvas.X(x); m_canvas.Y(y); //--- Размеры m_canvas.XSize(m_x_size); m_canvas.YSize(m_y_size); //--- Отступы от крайней точки m_area.XGap(CElement::CalculateXGap(x)); m_area.YGap(CElement::CalculateYGap(y)); //--- Сохраним указатель объекта CElementBase::AddToArray(m_area); return(true); }
请使用新的 Build6、7、8 或 9 版本。
使用 MetaTrader 5。MetaTrader 4 版本已不再支持,我无法为您提供任何建议。
以下内容可以吗?
//| Создаёт общую площадь |
//+------------------------------------------------------------------+
bool CColorPicker::CreateArea(void)
{
//--- Формирование имени объекта
string name=CElementBase::ProgramName()+"_color_picker_bg_"+(string)CElementBase::Id();
//--- Координаты
int x=CElementBase::X();
int y=CElementBase::Y();
//--- Создать объект
if(!m_area.Create(m_chart_id,name,m_subwin,x,y,m_x_size,m_y_size))
return(false);
//--- Свойства
m_area.BackColor(m_area_color);
m_area.Color(m_area_border_color);
m_area.BorderType(BORDER_FLAT);
m_area.Corner(m_corner);
m_area.Selectable(false);
m_area.Z_Order(m_area_zorder);
m_area.Tooltip("\n");
//--- Координаты
m_canvas.X(x);
m_canvas.Y(y);
//--- Размеры
m_canvas.XSize(m_x_size);
m_canvas.YSize(m_y_size);
//--- Отступы от крайней точки
m_area.XGap(CElement::CalculateXGap(x));
m_area.YGap(CElement::CalculateYGap(y));
//--- Сохраним указатель объекта
CElementBase::AddToArray(m_area);
return(true);
}
感谢您的答复。(注:我问的是在新版本中是否有效) 下面的内容可以吗?
//| Создаёт общую площадь |
//+------------------------------------------------------------------+
bool CColorPicker::CreateArea(void)
{
//--- Формирование имени объекта
string name=CElementBase::ProgramName()+"_color_picker_bg_"+(string)CElementBase::Id();
//--- Координаты
int x=CElementBase::X();
int y=CElementBase::Y();
//--- Создать объект
if(!m_area.Create(m_chart_id,name,m_subwin,x,y,m_x_size,m_y_size))
return(false);
//--- Свойства
m_area.BackColor(m_area_color);
m_area.Color(m_area_border_color);
m_area.BorderType(BORDER_FLAT);
m_area.Corner(m_corner);
m_area.Selectable(false);
m_area.Z_Order(m_area_zorder);
m_area.Tooltip("\n");
//--- Координаты
m_canvas.X(x);
m_canvas.Y(y);
//--- Размеры
m_canvas.XSize(m_x_size);
m_canvas.YSize(m_y_size);
//--- Отступы от крайней точки
m_area.XGap(CElement::CalculateXGap(x));
m_area.YGap(CElement::CalculateYGap(y));
//--- Сохраним указатель объекта
CElementBase::AddToArray(m_area);
return(true);
}
例如,您需要:
在 WndEvents.mqh 的公共区域创建一个新方法:
bool CreateColorPicker(CColorPicker &color_picker, CWindow &wnd_pointer, int wnd_index,int x,int y);
//|| 创建调色板,用于选择颜色。
//+------------------------------------------------------------------+
bool CWndEvents::CreateColorPicker(CColorPicker &color_picker, CWindow &wnd_pointer, int wnd_index, int x, int y)
{
//--- 重新计算坐标
int x_gap=x-wnd_pointer.X();
int y_gap=y-wnd_pointer.Y();
//--- 保存窗口指针
color_picker.WindowPointer(wnd_pointer);
//--- 创建一个元素
if(!color_picker.CreateColorPicker(m_chart_id,m_subwin,x_gap,y_gap))
return(false);
//--- 添加指向基本元素的指针
CWndContainer::AddToElementsArray(wnd_index,color_picker);
return(true);
}
//+------------------------------------------------------------------+
然后在 CProgram.mqh 中创建 ColorPicker:
x=m_window_main.X2()+1;
y=m_window_main.Y();
if(!CreateColorPicker(m_color_picker,m_window_main,m_window_main_index,x,y))
return(false);
...
我知道您不支持 MQL4 版本,但我认为 MQL4 不是原因。
在最新版本的 库中, 对象坐标的 计算方法 有所不同。 您需要 要么使用 新规则 指定 对象的坐标,要么 在自己的 方法 中按 常规 重新计算 坐标 。 ......
能否请您在 W_DIALOG 窗口中检查一下? 该库中的
ColorPicker 是用于微调自定义颜色的非常强大的工具,但我想知道简单的颜色表是否更便于日常使用。
感谢您提供的教程。我检查并更改了 坐标 计算。ColorPicker 在我的 环境 中运行良好 ,但仅限于在主窗口 (W_MAIN) 中显示。
,能否请您在 W_DIALOG 窗口 中检查一下?
,该库中的 ColorPicker 是用于微调自定义颜色的非常强大的工具,但我想知道简单的颜色表是否更便于日常使用。
感谢您的辛勤工作!!这个版本可以按列排序和删除行吗?
感谢您的辛勤工作!!这个版本可以按列排序和删除行吗?
下午好。我有以下问题:有一个输入字段 SpinEdit:
有一个事件处理程序:
即使在使用NormalizeDouble 函数后,当我点击输入框右侧的递增/递减时,也会得到这样的值:
用键盘输入时,一切正常。
原因何在?