Saludos Anatoly, no vi ningún método para guardar, cargar parámetros de formularios (posición, estado...) en la clase base. ¿Planeas añadir tales métodos en el futuro, teniendo en cuenta el tipo de formularios?
Tal artículo está previsto. Pero en mi versión, los parámetros a guardar y cargar serán determinados por el desarrollador de la aplicación MQL.
Buenas tardes. Anatoly, por supuesto quiero expresar mi más profundo respeto por tu labor y el trabajo que has realizado. Pero tengo una pregunta mientras pruebo la biblioteca en el ejemplo de un Asesor Experto. ¿Por qué el color de la ventana es negro, mientras que todos los colores de los elementos que componen la ventana están configurados como LightGray por defecto? ¿No hay una superposición de colores en alguna parte, que da lugar a una ventana negra? Adjunto una captura de pantalla:
Buenas tardes. Anatoly, por supuesto quiero expresar mi más profundo respeto por tu labor y el trabajo que has realizado. Pero tengo una pregunta mientras pruebo la biblioteca en el ejemplo de un Asesor Experto. ¿Por qué el color de la ventana es negro, mientras que todos los colores de los elementos que componen la ventana están configurados como LightGray por defecto? ¿No hay una superposición de colores en alguna parte, lo que resulta en una ventana negra? He adjuntado una captura de pantalla:
Puedes ver los colores por defecto del formulario en el constructor de la clase CWindow (fichero Window.mqh).
Si necesitas cambiar los colores del formulario, utiliza los métodos correspondientes de la clase CWindow. Las propiedades del formulario se establecen antes de su creación.
Este ejemplo fue mostrado en el artículo:
//+------------------------------------------------------------------+ //|| Crea un formulario para los | controles //+------------------------------------------------------------------+ bool CProgram::CreateWindow(const string caption_text) { //--- Añade el puntero de la ventana al array de ventanas CWndContainer::AddWindow(m_window); //--- Propiedades m_window.XSize(200); m_window.YSize(200); m_window.WindowBgColor(clrWhiteSmoke); m_window.WindowBorderColor(clrLightSteelBlue); m_window.CaptionBgColor(clrLightSteelBlue); m_window.CaptionBgColorHover(C'200,210,225'); //--- Creación del formulario if(!m_window.CreateWindow(m_chart_id,m_subwin,caption_text,1,1)) return(false); //--- return(true); }
//---
Resultado:

No pude encontrar un método que cambiara el color del texto del encabezado, así que decidí añadir en window.mqh:
string m_caption_text;
int m_caption_height;
color m_caption_text_color;
color m_caption_bg_color;
color m_caption_bg_color_off;
color m_caption_bg_color_hover;
color m_caption_color_bg_array[];
Y métodos:
color CaptionTextColor(void) const { return(m_caption_text_color); }
Bueno y este método cambia en consecuencia:
//|| Crea una etiqueta de texto de cabecera|
//+------------------------------------------------------------------+
bool CWindow::CreateLabel(void)
{
string name=CElementBase::ProgramName()+"_window_label_"+(string)CElementBase::Id();
//--- Coordenadas del objeto
int x=CElementBase::X()+m_label_x_gap;
int y=CElementBase::Y()+m_label_y_gap;
//--- Establecer la etiqueta de texto
if(!m_label.Create(m_chart_id,name,m_subwin,x,y))
return(false);
//--- Establecer propiedades
m_label.Description(m_caption_text);
m_label.Font(CElementBase::Font());
m_label.FontSize(CElementBase::FontSize());
m_label.Color(m_caption_text_color);
m_label.Corner(m_corner);
m_label.Selectable(false);
m_label.Z_Order(m_button_zorder);
m_label.Tooltip("\n");
//--- Guarda las coordenadas
m_label.X(x);
m_label.Y(y);
//--- Indents from the end point
m_label.XGap(x-m_x);
m_label.YGap(y-m_y);
//--- Guardar dimensiones
m_label.XSize(m_label.X_Size());
m_label.YSize(m_label.Y_Size());
//--- Guardar el puntero del objeto
CElementBase::AddToArray(m_label);
return(true);
}
No pude encontrar un método que cambiara el color del texto del encabezado, así que decidí añadirlo en window.mqh:
Bien. También añadiré esta característica en uno de los próximos artículos.
La última versión de la librería puede descargarse en este artículo: GUIs X: New features for a drawn table (build 9).
Una nueva versión(build 10) podría ser lanzada la próxima semana.
Hola Sr. Anatoli, sus artículos son muy agradables y la codificación son impresionantes.
Necesito una ayuda para construir mi panel en el gráfico. ¿Puede usted por favor me ayude?
Gracias.
HI. Me gustaría preguntar cómo puedo solucionar todos estos errores. Gracias
'Window.mqh' Window.mqh 1 1 'Element.mqh' Element.mqh 1 1 'Objects.mqh' Objects.mqh 1 1 'Enums.mqh' Enums.mqh 1 1 'Defines.mqh' Defines.mqh 1 1 'ChartObjectsBmpControls.mqh' ChartObjectsBmpControls.mqh 1 1 'ChartObject.mqh' ChartObject.mqh 1 1 'Object.mqh' Object.mqh 1 1 'StdLibErr.mqh' StdLibErr.mqh 1 1 'ChartObjectsTxtControls.mqh' ChartObjectsTxtControls.mqh 1 1 'Colors.mqh' Colors.mqh 1 1 undefined class 'CBmpLabel' cannot be used Window.mqh 25 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 undefined class 'CLabel' cannot be used Window.mqh 26 12 see declaration of class 'CLabel' Objects.mqh 19 7 undefined class 'CBmpLabel' cannot be used Window.mqh 27 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 undefined class 'CBmpLabel' cannot be used Window.mqh 28 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 undefined class 'CBmpLabel' cannot be used Window.mqh 29 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 undefined class 'CBmpLabel' cannot be used Window.mqh 30 15 see declaration of class 'CBmpLabel' Objects.mqh 20 7 'ENUM_WINDOW_TYPE' - unexpected token, probably type is missing? Window.mqh 36 5 'm_window_type' - semicolon expected Window.mqh 36 22 'ENUM_WINDOW_TYPE' - unexpected token, probably type is missing? Window.mqh 99 5 'WindowType' - semicolon expected Window.mqh 99 23 'void' - name expected Window.mqh 102 5 '}' - expressions are not allowed on a global scope Window.mqh 104 5 'const' modifier not allowed for nonmember functions Window.mqh 118 28 'const' modifier not allowed for nonmember functions Window.mqh 126 30 'const' modifier not allowed for nonmember functions Window.mqh 132 29 'const' modifier not allowed for nonmember functions Window.mqh 138 32 'const' modifier not allowed for nonmember functions Window.mqh 144 37 'public' - unexpected token, probably type is missing? Window.mqh 168 3 'long' - unexpected token, probably type is missing? Window.mqh 170 46 'double' - unexpected token, probably type is missing? Window.mqh 170 66 'string' - unexpected token, probably type is missing? Window.mqh 170 88 'virtual' - unexpected token Window.mqh 172 5 'virtual' - unexpected token Window.mqh 174 5 'virtual' - unexpected token Window.mqh 176 5 'virtual' - unexpected token Window.mqh 177 5 'virtual' - unexpected token Window.mqh 178 5 'virtual' - unexpected token Window.mqh 179 5 'virtual' - unexpected token Window.mqh 181 5 'virtual' - unexpected token Window.mqh 182 5 '}' - expressions are not allowed on a global scope Window.mqh 183 1 'RollUpSubwindowMode' - member function not defined Window.mqh 222 15 'ChangeSubwindowHeight' - member function not defined Window.mqh 235 15 'Hide' - member function not defined Window.mqh 294 15 'DefaultIcon' - member function not defined Window.mqh 362 17 'advisor.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\advisor.bmp" advisor.bmp 1 1 'indicator.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\indicator.bmp" indicator.bmp 1 1 'script.bmp' as resource "::Images\EasyAndFastGUI\Icons\bmp16\script.bmp" script.bmp 1 1 'm_window_type' - struct member undefined Window.mqh 193 5 'm_chart' - undeclared identifier Window.mqh 210 5 'SetWindowProperties' - undeclared identifier Window.mqh 212 5 ')' - expression expected Window.mqh 212 25 'm_window_type' - undeclared identifier Window.mqh 286 8 'W_DIALOG' - undeclared identifier Window.mqh 286 25 '.' - struct or class type expected Window.mqh 396 15 'Create' - undeclared identifier Window.mqh 396 16 'Create' - some operator expected Window.mqh 396 16 '(' - unbalanced left parenthesis Window.mqh 396 7 ',' - unexpected token Window.mqh 396 33 'name' - some operator expected Window.mqh 396 35 expression has no effect Window.mqh 396 23 ',' - unexpected token Window.mqh 396 49 expression has no effect Window.mqh 396 41 ',' - unexpected token Window.mqh 396 52 expression has no effect Window.mqh 396 51 ')' - unexpected token Window.mqh 396 55 expression has no effect Window.mqh 396 54 ')' - unexpected token Window.mqh 396 56 '.' - struct or class type expected Window.mqh 402 11 'BmpFileOn' - undeclared identifier Window.mqh 402 12 'BmpFileOn' - some operator expected Window.mqh 402 12 ')' - unexpected token Window.mqh 402 40 expression has no effect Window.mqh 402 27 '.' - struct or class type expected Window.mqh 403 11 'BmpFileOff' - undeclared identifier Window.mqh 403 12 'BmpFileOff' - some operator expected Window.mqh 403 12 ')' - unexpected token Window.mqh 403 41 expression has no effect Window.mqh 403 28 '.' - struct or class type expected Window.mqh 404 11 'Corner' - undeclared identifier Window.mqh 404 12 'Corner' - some operator expected Window.mqh 404 12 ')' - unexpected token Window.mqh 404 27 expression has no effect Window.mqh 404 19 '.' - struct or class type expected Window.mqh 405 11 'Selectable' - undeclared identifier Window.mqh 405 12 'Selectable' - some operator expected Window.mqh 405 12 ')' - unexpected token Window.mqh 405 28 expression has no effect Window.mqh 405 23 '.' - struct or class type expected Window.mqh 406 11 'Z_Order' - undeclared identifier Window.mqh 406 12 'Z_Order' - some operator expected Window.mqh 406 12 ')' - unexpected token Window.mqh 406 35 expression has no effect Window.mqh 406 20 '.' - struct or class type expected Window.mqh 407 11 'Tooltip' - undeclared identifier Window.mqh 407 12 'Tooltip' - some operator expected Window.mqh 407 12 ')' - unexpected token Window.mqh 407 24 expression has no effect Window.mqh 407 21 '.' - struct or class type expected Window.mqh 409 11 'X' - some operator expected Window.mqh 409 12 '.' - struct or class type expected Window.mqh 410 11 'Y' - some operator expected Window.mqh 410 12 '.' - struct or class type expected Window.mqh 412 11 'XGap' - some operator expected Window.mqh 412 12 '.' - struct or class type expected Window.mqh 413 11 'YGap' - some operator expected Window.mqh 413 12 '.' - struct or class type expected Window.mqh 415 11 '.' - struct or class type expected Window.mqh 415 24 'X_Size' - undeclared identifier Window.mqh 415 25 'X_Size' - some operator expected Window.mqh 415 25 '(' - unexpected token Window.mqh 415 31 'XSize' - some operator expected Window.mqh 415 12 '.' - struct or class type expected Window.mqh 416 11 '.' - struct or class type expected Window.mqh 416 24 'Y_Size' - undeclared identifier Window.mqh 416 25 'Y_Size' - some operator expected Window.mqh 416 25 '(' - unexpected token Window.mqh 416 31 'YSize' - some operator expected Window.mqh 416 12 'm_icon' - parameter conversion not allowed Window.mqh 418 26 void CElement::AddToArray(CChartObject&) Element.mqh 195 10 'm_icon_file' - undeclared identifier Window.mqh 109 9 'm_tooltips_button' - undeclared identifier Window.mqh 112 9 'm_right_limit' - undeclared identifier Window.mqh 115 9 'm_is_minimized' - undeclared identifier Window.mqh 119 16 expression not boolean Window.mqh 119 16 'm_is_minimized' - undeclared identifier Window.mqh 122 9 100 errors, 11 warnings 101 12
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Interfaces gráficas I: Formulario para controles (Capítulo 2):
Este artículo es la continuación de la primera parte de la serie sobre las interfaces gráficas. El artículo Interfaces gráficas I: Preparación de la estructura de la librería (Capítulo 1) cuenta con más detalles para qué sirve esta librería. Al final de cada capítulo se puede encontrar la lista completa de los enlaces a los artículos de la primera parte, así como descargar la versión completa de la librería en la fase actual del desarrollo del proyecto. Es necesario colocar los ficheros en los mismos directorios, tal como están ubicados en el archivo.
En el capítulo anterior hemos hablado la estructura de la librería para la creación de las interfaces gráficas. Hemos creado (1) las clases para los objetos primitivos, (2) la clase base para todos los controles, (3) las clases principales para almacenar los punteros a los controles y manejar estos controles en el manejador común de eventos.
En este artículo vamos a crear el primero y el más importante elemento de las interfaces gráficas: formulario para los controles. A este formulario se le puede adjuntar múltiples controles de diferentes tipos en cualquier orden y secuencia. El formulario será movible, y todos los controles adjuntos a él van a desplazarse de la misma manera.
¿De qué partes se compone la ventana que vamos a crear?
Fig. 1. Partes del formulario para los controles
Autor: Anatoli Kazharski