Anatoli Kazharski: Utilice MetaTrader 5. La versión MetaTrader 4 ya no tiene soporte y no puedo aconsejarte nada.
Gracias por su respuesta. (n.b. Le pregunté si funciona con la nueva construcción)
¿Está bien abajo?
//+------------------------------------------------------------------+ //| Создаёт общую площадь | //+------------------------------------------------------------------+ 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); }
stt: Gracias por su respuesta. (n.b. Le pregunté si funciona con la nueva versión)
¿Está bien abajo?
//+------------------------------------------------------------------+ //| Создаёт общую площадь | //+------------------------------------------------------------------+ 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); }
Las últimas versiones de labiblioteca, elcálculo decoordenadas delobjeto era diferente.Es necesarioutilizar lasnuevas normasespecificanlas coordenadas del objeto, oen sus propiosmétodospara volver a calcular lascoordenadas de laformahabitual.
Por ejemplo, usted necesita:
En WndEvents.mqh en el área pública crear un nuevo método:
//--- Crea una paleta de colores para la selección de colores bool CreateColorPicker(CColorPicker &color_picker, CWindow &wnd_pointer, int wnd_index,int x,int y);
Fueradel cuerpo de la clasecreaun cuerpo de método:
//+------------------------------------------------------------------+ //|| Crea una paleta de colores para seleccionar un color //|| //+------------------------------------------------------------------+ bool CWndEvents::CreateColorPicker(CColorPicker &color_picker, CWindow &wnd_pointer, int wnd_index, int x, int y) { //--- recalcular las coordenadas int x_gap=x-wnd_pointer.X(); int y_gap=y-wnd_pointer.Y(); //--- Guardar el puntero de la ventana color_picker.WindowPointer(wnd_pointer); //--- Creación de un elemento if(!color_picker.CreateColorPicker(m_chart_id,m_subwin,x_gap,y_gap)) return(false); //--- Añade un puntero al elemento en la base CWndContainer::AddToElementsArray(wnd_index,color_picker); return(true); } //+------------------------------------------------------------------+
Y en CProgram.mqh crea tu ColorPicker:
//--- Selector de color 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);
Artyom Trishkin: Las últimas versiones de labiblioteca,el cálculo decoordenadas delobjeto era diferente.Es necesarioutilizar lasnuevas normasespecificanlas coordenadas del objeto, oen sus propiosmétodospara volver a calcularlas coordenadas de laformahabitual. ......
Gracias por el tutorial. He comprobado y cambiado el cálculo de coordenadas. ColorPickerfunciona bien en mi entorno pero sólo cuando se muestra en la ventana principal (W_MAIN).
¿Podría comprobarlo en la ventana W_DIALOG por favor?
ColorPicker en esta biblioteca es una herramienta muy potente para el ajuste fino de colores personalizados, pero me pregunto si una simple tabla de colores sería más conveniente para el uso diario.
stt: Gracias por el tutorial. He comprobado y cambiado el cálculo de coordenadas. ColorPickerfunciona bien en mi entorno pero sólo cuando se muestra en la ventana principal (W_MAIN).
¿Podría comprobarlo en la ventana W_DIALOG por favor?
ColorPicker en esta biblioteca es una herramienta muy potente para el ajuste fino de colores personalizados, pero me pregunto si una simple tabla de colores sería más conveniente para el uso diario.
Buenas tardes. Tengo la siguiente pregunta: hay un campo de entrada SpinEdit:
bool CProgram::CreateSpinEdit_TradingLot(conststring text)
{
//--- Guardar el puntero de la ventana
m_spin_edit_Trading_lot.WindowPointer(m_window);
m_tabs.AddToElementsArray(1,m_spin_edit_Trading_lot);
//--- Coordenadasint x=m_window.X()+SPINEDIT14_GAP_X;
int y=m_window.Y()+SPINEDIT14_GAP_Y;
//--- Valordouble v=(m_spin_edit_Trading_lot.GetValue()==WRONG_VALUE) ? 0.01 : m_spin_edit_Trading_lot.GetValue();
//--- Establecer propiedades antes de la creación
m_spin_edit_Trading_lot.XSize(90);
m_spin_edit_Trading_lot.YSize(18);
m_spin_edit_Trading_lot.EditXSize(50);
m_spin_edit_Trading_lot.MaxValue(100);
m_spin_edit_Trading_lot.MinValue(0.01);
m_spin_edit_Trading_lot.StepValue(0.01);
m_spin_edit_Trading_lot.SetDigits(2);
m_spin_edit_Trading_lot.SetValue(v);
m_spin_edit_Trading_lot.ResetMode(false);
m_spin_edit_Trading_lot.AreaColor(clrWhite);
//--- Crear un controlif(!m_spin_edit_Trading_lot.CreateSpinEdit(m_chart_id,m_subwin,text,x,y))
return(false);
//--- Añade el objeto al array común de grupos de objetos
CWndContainer::AddToElementsArray(0,m_spin_edit_Trading_lot);
return(true);
}
Hazlo con la nueva Build6,7,8 o 9 por favor.
Utilice MetaTrader 5. La versión MetaTrader 4 ya no tiene soporte y no puedo aconsejarte nada.
¿Está bien abajo?
//| Создаёт общую площадь |
//+------------------------------------------------------------------+
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);
}
Gracias por su respuesta. (n.b. Le pregunté si funciona con la nueva versión)
¿Está bien abajo?
//| Создаёт общую площадь |
//+------------------------------------------------------------------+
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);
}
Por ejemplo, usted necesita:
En WndEvents.mqh en el área pública crear un nuevo método:
bool CreateColorPicker(CColorPicker &color_picker, CWindow &wnd_pointer, int wnd_index,int x,int y);
//|| Crea una paleta de colores para seleccionar un color //||
//+------------------------------------------------------------------+
bool CWndEvents::CreateColorPicker(CColorPicker &color_picker, CWindow &wnd_pointer, int wnd_index, int x, int y)
{
//--- recalcular las coordenadas
int x_gap=x-wnd_pointer.X();
int y_gap=y-wnd_pointer.Y();
//--- Guardar el puntero de la ventana
color_picker.WindowPointer(wnd_pointer);
//--- Creación de un elemento
if(!color_picker.CreateColorPicker(m_chart_id,m_subwin,x_gap,y_gap))
return(false);
//--- Añade un puntero al elemento en la base
CWndContainer::AddToElementsArray(wnd_index,color_picker);
return(true);
}
//+------------------------------------------------------------------+
Y en CProgram.mqh crea tu 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);
...
Sé que usted no es compatible con la versión MQL4, pero creo que MQL4 no es una razón.
Las últimas versiones de la biblioteca, el cálculo de coordenadas del objeto era diferente. Es necesario utilizar las nuevas normas especifican las coordenadas del objeto, o en sus propios métodos para volver a calcular las coordenadas de la forma habitual.
......
¿Podría comprobarlo en la ventana W_DIALOG por favor?
ColorPicker en esta biblioteca es una herramienta muy potente para el ajuste fino de colores personalizados, pero me pregunto si una simple tabla de colores sería más conveniente para el uso diario.
Gracias por el tutorial. He comprobado y cambiado el cálculo de coordenadas . ColorPicker funciona bien en mi entorno pero sólo cuando se muestra en la ventana principal (W_MAIN).
¿Podría comprobarlo en la ventana W_DIALOG por favor?
ColorPicker en esta biblioteca es una herramienta muy potente para el ajuste fino de colores personalizados, pero me pregunto si una simple tabla de colores sería más conveniente para el uso diario.
¿es posible ordenar por columnas y borrar filas en esta versión?
¿es posible ordenar por columnas y borrar filas en esta versión?
Buenas tardes. Tengo la siguiente pregunta: hay un campo de entrada SpinEdit:
Hay un manejador de eventos:
Y aún después de la función NormalizeDouble obtengo dichos valores cuando hago click en el incremento/decremento a la derecha del campo de entrada:
Cuando introduzco desde el teclado, todo es correcto.
¿Cuál puede ser la razón?