Galería de interfaces de usuario escritas en MQL - página 46

 
Edgar Akhmadeev #:

...

Gracias por la opinión detallada.

Voy a tratar de resolver su problema con la ventana dinámica - la complejidad de la disposición de las tablas.

Permítanme ponerlo de esta manera - una ventana dinámica de pantalla completa tiene un propósito especial en la interfaz gráfica de usuario y, como consecuencia, tiene limitaciones específicas. No es universal como la ventana "AJUSTES". Y esto es lógico. Al fin y al cabo, todo lo que se "personaliza" específicamente está siempre limitado de alguna manera.

Sin embargo, una tabla dinámica o una lista infinita pueden combinarse con otros grupos de elementos en una ventana dinámica y no necesitan un espacio separado y "único", aunque, en mi opinión, es más cómodo. ¿Cómo realizar la compatibilidad de las tablas con otros grupos? - Es una cuestión de tecnología.

A modo de experimento, tomaré sus tablas e intentaré insertarlas en una ventana a pantalla completa. Por supuesto, tengo que corregir el código...

Resultado:

(Haga clic en la imagen)


No voy a publicar el código todavía, porque francamente hablando todo es muy "crudo". He tenido que usar trucos y "muletillas". Pero, como veis, todo puede funcionar.

 
Edgar Akhmadeev #:
...

7. Una cosa más. Tu ventana dinámica es una ventana par que se puede expandir y minimizar. No me gustaría una ventana, sino un escritorio. Como tu constructor. Para que

a) se abra inmediatamente expandida, cubriendo todo el gráfico

b) no tenga cabecera y marco (sólo barra de tareas)

c) no se podía colapsar

d) permitía colocar elementos como una ventana normal

Es decir, sustituir DINAMIC por FULLSCREEN o DESKTOP. Ya tiene la base para ello.


Después del lanzamiento de ventana dinámica pensaré en esta opción, ya que entiendo que es razonable en condiciones de pantalla pequeña de portátil.
 
Реter Konow #:
Continuaré un poco más tarde.

KIB-código de las ventanas incluidas en la versión (continuación):

//----------------------------------------------------------------------------------
//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/               W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/           W_NAME, "Settings example 2",
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/        W_ICON, "::Images\\16x16\\Application.bmp",  
//------------------------------------------------------
/*PLACE THE NAME IN THE MIDDLE*/  NIM,
//------------------------------------------------------
//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//----------------------------------------------------------------------------------
/*WINDOW OPENS AT START*/   OPEN_ON_INIT,  /*(OOI)*/

/*MARGINS OF THE WINDOW*/   MARGINS, 20,20,/*Х, Y*/
//----------------------------------------------------------------------------------

//----------------------------------------------------------------------------------
GROUP, A,

//----------------------------------------------------------------------------------------------------------
__,  BOARD, "Choose between few options:",      GAP, 65,              BOARD, "Insert text for each option:",
//----------------------------------------------------------------------------------------------------------
GAP, 10,
//---------------------------------------------------------------------------------------------------------- 
__, H_SEP,A,   W,355,    
//----------------------------------------------------------------------------------------------------------
__, R_BUTTON,"Choose option 1", ON,    _,A_TEXT, "Option 1 is chosen.",     EDIT, "Comment 1",  W,140,

__, R_BUTTON,"Choose option 2",        _,A_TEXT, "Option 2 is chosen.",     EDIT, "Comment 2",  W,140,

__, R_BUTTON,"Choose option 3",        _,A_TEXT, "Option 3 is chosen.",     EDIT, "Comment 3",  W,140,                 
//---------------------------------------------------------------------------------------------------------- 
__, H_SEP,A,    W,355,    
//---------------------------------------------------------------------------------------------------------- 

GAP, 20,
//----------------------------------------------------------------------------------------------------------
__,  BOARD, "Choose between given options:",  GAP, 40,     BOARD, "Choose your or given options:",                 
//----------------------------------------------------------------------------------------------------------
GAP, 10,
//----------------------------------------------------------------------------------------------------------
__, C_LIST, "C_LIST 1",  H,150,                            D_LIST, "D_LIST 1",  H,150,            
//---------------------------------------------------------------------------------------------------------- 
//---------------------------------------------------------------------------------------------------------- 
__, H_SEP,A,    W,355,    
//---------------------------------------------------------------------------------------------------------- 
//----------------------------------------------------------------------------------------------------------
END_GROUP,
//----------------------------------------------------------------------------------------------------------
i, AT, _X2X, "MF", 20, _Y2Y, "MF", 20,
//---------------------------------------
i, X_GAP, 55,
i, Y_GAP, 10,
//---------------------------------------
SWITCH, "Choose option 1", "Choose option 2", "Choose option 3",    END,
//---------------------------------------
//------------------------------------------------------ 
GROUP, A,
__,L_ITEM, "L_ITEM  1",ON,
__,L_ITEM, "L_ITEM  2",
__,L_ITEM, "L_ITEM  3",
__,L_ITEM, "L_ITEM  4",
__,L_ITEM, "L_ITEM  5",
__,L_ITEM, "L_ITEM  6",
__,L_ITEM, "L_ITEM  7",
__,L_ITEM, "L_ITEM  8",
__,L_ITEM, "L_ITEM  9",
__,L_ITEM, "L_ITEM  10",
__,L_ITEM, "L_ITEM  11",
__,L_ITEM, "L_ITEM  12",
__,L_ITEM, "L_ITEM  13",
__,L_ITEM, "L_ITEM  14",
__,L_ITEM, "L_ITEM  16",
__,L_ITEM, "L_ITEM  17",
__,L_ITEM, "L_ITEM  18",
__,L_ITEM, "L_ITEM  19",
__,L_ITEM, "L_ITEM  20",

END_GROUP,
//-------------------------
i, AT, LEFT_TOP, 0,0,
//-------------------------
i, IN,"D_LIST 1",
//----------------------------------------------------------------------------------

//----------------------------------------------------------------------------------
GROUP, "V2 group",

__, L_ITEM,"Times_New_Roman",
__, L_ITEM,"Arial",
__, L_ITEM,"Tahoma",
__, L_ITEM,"Dali",
__, L_ITEM,"BatangChe",
__, L_ITEM,"Consolas",
__, L_ITEM,"Courier",
__, L_ITEM,"Courier_New",ON,
__, L_ITEM,"DFKai_SB",
__, L_ITEM,"DotumChe",
__, L_ITEM,"FangSong",
__, L_ITEM,"Fixedsys",
__, L_ITEM,"GulimChe",
__, L_ITEM,"GungsuhChe",
__, L_ITEM,"KaiTi",


END_GROUP,
//--------------------
i, IN,"C_LIST 1",
//--------------------
i, AT, LEFT_TOP, 1,1,
//--------------------

//----------------------------------------------------------------------------------
GROUP, A,
//----------------------------------------------------------------------------------------------------------
__, D_BUTTON, "Confirm", N_FRAME_COLOR, (int)C'51,153,255', _,CWIP, GAP,7,  D_BUTTON, "Cancel", _,CWIP, 
//---------------------------------------------------------------------------------------------------------- 
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 230, _Y2H, "D_LIST 1",  20,
//----------------------------------------------------------------------------------
//------------------------------------------------------
//FINISH THE WINDOW BY KEYWORDS END_WINDOW,
//------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------
 



//----------------------------------------------------------------------------------
//DECLARE A NEW WINDOW
//----------------------------------------------------------------------------------
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/               W_TYPE, SETTINGS,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/           W_NAME, "Input parameters:",
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/        W_ICON, "::Images\\16x16\\Tune.bmp", 
//------------------------------------------------------
/*PLACE THE NAME IN THE MIDDLE*/  NIM,
//------------------------------------------------------
/*SET COLOR OF THE BACKGROUND*/   "MF", N_COLOR,(int)C'255,255,255',
//------------------------------------------------------
/*SET WINDOW'S ADDITIONAL PROPERTIES*/   
//----------------------------------------------------------------------------------
/*WINDOW OPENS AT START*/         OPEN_ON_INIT,  /*(OOI)*/

/*MARGINS OF THE WINDOW*/         MARGINS, 15,15,/*Х, Y*/
//----------------------------------------------------------------------------------

//----------------------------------------------------------------------------------
GROUP, A,
//-------------------------------------------------
__,V_BOX, "V1", W,272, _,H,200, _,N_FRAME,1,
//-------------------------------------------------
END_GROUP,
//-----------------------------------
 i, AT, _X2X, "MF", 3, _Y2Y, "MF", 5,
//-----------------------------------

//-------------------------------------------------
GROUP, A, 
//-------------------------------------------------
IS_TABLE, "Input parameters table",
//-------------------------------------------------
__, T_HEADER, "Variable",           C_HEADER,"Value",
//-------------------------------------------------
__, R_HEADER,"MAGICB",              EDIT,"MAGICB:", 
//-------------------------------------------------
__, R_HEADER,"MAGICS",              EDIT,"MAGICS:",
//-------------------------------------------------
__, R_HEADER,"s9",                  EDIT,"s9:",
//-------------------------------------------------
__, R_HEADER,"Hours_to_GMT_Offset", EDIT,"Hours_to_GMT_Offset:",
//-------------------------------------------------
__, R_HEADER,"Hours",               C_LIST,"Hours:",
//-------------------------------------------------
__, R_HEADER,"Begin_hour",          EDIT,"Begin_hour:",
//-------------------------------------------------
__, R_HEADER,"End_hour",            EDIT,"End_hour:",
//-------------------------------------------------
__, R_HEADER,"Comments",            EDIT,"Comments:",
//-------------------------------------------------

END_GROUP,
//------------------------------------
 i, AT, LEFT_TOP,1,1,
//------------------------------------
 i,IN,"V1",
//------------------------------------
 i,Y_GAP,-1,
//------------------------------------
 i,X_GAP,-1,
//------------------------------------

//------------------------------------
 i, IS_ZEBRA_STYLE,
//------------------------------------

//-----------------------------------------------------------------------------------------------------------------------------
 i, T_HEADERS,  FONT_SIZE,9, W,180,  text,_A1_,_X2X,  text,_C1_,10,                               END,
//-----------------------------------------------------------------------------------------------------------------------------
 i, R_HEADERS,  FONT_SIZE,9, H,22,   text,_A1_,_X2X,  text,_C1_,10, text,_C2_,1,                  END,
//-----------------------------------------------------------------------------------------------------------------------------
 i, C_HEADERS,  FONT_SIZE,9, W,90,   text,_A1_,_X2X,  text,_C1_,10, N_COLOR,(int)C'155,255,255',  END,
//-----------------------------------------------------------------------------------------------------------------------------
 i, EDITS,      FONT_SIZE,9, W,90,   text,_C2_,1,   POINTED,0,                                    END,
//-----------------------------------------------------------------------------------------------------------------------------
 i, C_LISTS,   FONT_SIZE,9, 
               //-----------------------------
               W,90,   
               //-----------------------------
               text,_C2_,1,   
               //-----------------------------
               POINTED,0,  
               //-----------------------------
               bar,NG_LINES,0, 
               //-----------------------------
               bar,NG_STEP,0,  
               //-----------------------------
               bar,AG_LINES,0, 
               //-----------------------------
               bar,AG_STEP,0,    
               //-----------------------------
               END,
//-----------------------------------------------------------------------------------------------------------------------------

//----------------------------------------------------------------------------------
//----------------------------------------------------------------------------------
GROUP, A,
//-------------------------------------------------
__,V_BOX, "V2", W,272, _,H,200, _,N_FRAME,1,
//-------------------------------------------------
END_GROUP,
//-----------------------------------
 i, AT, _X2W, "V1", 10, _Y2Y, "MF", 5,
//-----------------------------------

//-------------------------------------------------
GROUP, A, IS_TABLE, "Input parameters table 2",
//-------------------------------------------------
//-------------------------------------------------
__, T_HEADER, "Variable ",     C_HEADER,"Value ",
//-------------------------------------------------
//-------------------------------------------------
__, R_HEADER,"SELL",           C_LIST,  "SELL:",
//-------------------------------------------------
__, R_HEADER,"BUY",            C_LIST,  "BUY:",
//-------------------------------------------------
__, R_HEADER,"s7",             EDIT,    "s7:",
//-------------------------------------------------
__, R_HEADER,"LotMax",         EDIT,    "LotMax:",
//-------------------------------------------------
__, R_HEADER,"OnOffLock",      C_LIST,  "OnOffLock:",
//-------------------------------------------------
__, R_HEADER,"LockLevel",      EDIT,    "LockLevel:",
//-------------------------------------------------
__, R_HEADER,"AxelOption",     C_LIST,  "AxelOption:",
//-------------------------------------------------
__, R_HEADER,"LimLossMoney",   EDIT,    "LimLossMoney:",
//-------------------------------------------------

//-------------------------------------------------
END_GROUP,
//-------------------------------------------------
i, AT, LEFT_TOP,1,1,
//-----------------------
i,IN,"V2",
//-----------------------
i,Y_GAP,-1,
//-----------------------
i,X_GAP,-1,
//-----------------------

//------------------------------------
 i, IS_ZEBRA_STYLE,
//------------------------------------

//-----------------------------------------------------------------------------------------------------------------------------
 i, T_HEADERS,  FONT_SIZE,9, W,180,  text,_A1_,_X2X,  text,_C1_,10,                               END,
//-----------------------------------------------------------------------------------------------------------------------------
 i, R_HEADERS,  FONT_SIZE,9, H,22,   text,_A1_,_X2X,  text,_C1_,10, text,_C2_,1,                  END,
//-----------------------------------------------------------------------------------------------------------------------------
 i, C_HEADERS,  FONT_SIZE,9, W,90,   text,_A1_,_X2X,  text,_C1_,10, N_COLOR,(int)C'155,255,255',  END,
//-----------------------------------------------------------------------------------------------------------------------------
 i, EDITS,      FONT_SIZE,9, W,90,   text,_C2_,1,   POINTED,0,                                    END,
//-----------------------------------------------------------------------------------------------------------------------------
 i, C_LISTS,   FONT_SIZE,9, 
               //-----------------------------
               W,90,   
               //-----------------------------
               text,_C2_,1,   
               //-----------------------------
               POINTED,0,  
               //-----------------------------
               bar,NG_LINES,0, 
               //-----------------------------
               bar,NG_STEP,0,  
               //-----------------------------
               bar,AG_LINES,0, 
               //-----------------------------
               bar,AG_STEP,0,    
               //-----------------------------
               END,
//-----------------------------------------------------------------------------------------------------------------------------

//------------------------------------
GROUP,A,
//----------------------
__,L_ITEM,"true",
//----------------------
__,L_ITEM,"false",
//----------------------
END_GROUP,
//------------------------------------
i, IN, "Hours:",
i, AT, LEFT_TOP, 0,0,
//------------------------------------

//------------------------------------
GROUP,A,
//-------------------
__,L_ITEM,"true ",
//-------------------
__,L_ITEM,"false ",
//-------------------
END_GROUP,
//------------------------------------
i, IN, "GameOn:",
//-------------------
i, AT, LEFT_TOP, 0,0,
//------------------------------------

//------------------------------------
GROUP,A,
//--------------------
__,L_ITEM,"true  ",
//--------------------
__,L_ITEM,"false  ",
//--------------------
END_GROUP,
//------------------------------------
i, IN, "OnOffUnLine:",
//------------------------------------
i, AT, LEFT_TOP, 0,0,
//------------------------------------
END_WINDOW,
//--------------------------------------------------------
 


//------------------------------------------------------ 
//DECLARE A NEW WINDOW
//------------------------------------------------------ 
NEW_WINDOW,  
//------------------------------------------------------
/*SET WINDOW TYPE*/             W_TYPE, DIALOG,  
//------------------------------------------------------
/*WRITE WINDOW'S NAME*/         W_NAME, "Risky managment!", 
//------------------------------------------------------
/*SET WINDOW'S CAPTION*/        CAPTION,"*Warning*", 
//------------------------------------------------------
/*NAME (CAPTION)IN THE MIDDLE*/ NIM,  
//------------------------------------------------------
/*POINT TO WINDOW'S ICON*/      W_ICON, "::Images\\16x16\\Warning.bmp",  
//------------------------------------------------------
/*ONLY CLOSING BUTTON*/         ONLY_CLOSING, 
//------------------------------------------------------
/*WINDOW ALWAYS ON TOP*/        ALWAYS_ON_TOP, 
//------------------------------------------------------
/*OPEN WINDOW WITH A SOUND*/    OPENING_SOUND,"::Sounds\\Windows Critical Stop.wav", 
//------------------------------------------------------ 
/*WINDOW OPENS AT START*/       //OPEN_ON_INIT,  /*(OOI)*/
//------------------------------------------------------
/*LOCK WINDOWS IF OPENED*/      LOCKS_WINDOWS, ALL_WINDOWS,   
//------------------------------------------------------
/*MARGINS OF THE WINDOW*/       MARGINS, 20,20,/*Х, Y*/
//------------------------------------------------------ 

//----------------------------------------------------------------------------------
GROUP, A,
//--------------------------------------------
__, T_BOX, "T1", TEXT,
                //--------------------------------
                "Risky settings can cause loss.",
                //--------------------------------
                END,
//--------------------------------------------
END_GROUP,
//--------------------------------------------
i, AT, _X2X, "MF", 1, _Y2Y, "MF", 1,
//--------------------------------------------
i, T_BOXES,
            text,X_CORRECTION,55,
            //----------------------------
            text,Y_CORRECTION,10,
            //----------------------------
            text, N_COLOR, (uint)clrRed,
            //----------------------------
            X_SIZE_CORRECTION,15,
            //----------------------------
            Y_SIZE_CORRECTION,20,
            //----------------------------
            TEXT_FONT, "Arial Black",
            //----------------------------
            FONT_SIZE,12,
            //----------------------------
            W, 200,  H, 70,
            //----------------------------
            END,
//----------------------------------------------------------------------------------

//----------------------------------------------------------------------------------
GROUP, A,
//---------------------------------------------------
__, LABEL,A, N_LABEL,"::Images\\32x32\\Warning.bmp",
//---------------------------------------------------
END_GROUP,
//--------------------------
i, AT, _X2X, "MF", 10, _Y2Y, "MF", 10,
//--------------------------------------------------- 

//--------------------------------------------------- 
GROUP, A,
//---------------------------------------------------
__,CHECKBOX, "Don't show this warning again.", 
//---------------------------------------------------
END_GROUP,
//---------------------------------------------------
i, AT, _X2X, "MF", 10, _Y2H, "T1", 30,
//--------------------------------------------------- 

//--------------------------------------------------- 
GROUP, A,
//---------------------------------------------------
__, D_BUTTON, "Ok", N_FRAME_COLOR, (int)C'51,153,255',_,CWIP, 
//---------------------------------------------------                       
                   GAP,7, 
//---------------------------------------------------                  
   D_BUTTON, "Cancel", _,CWIP, /*(CLOSE WINDOW IF PRESSED)*/
//---------------------------------------------------
END_GROUP,
//------------------------------------------------------------------
i, AT, _X2X, "MF", 200, _Y2Y, "Don't show this warning again.",  -5,
//------------------------------------------------------------------
END_WINDOW,
//----------------------------------------------------------------------------------
 

Seguiré publicando el código de varias ventanas al día (para facilitar su comprensión).

Estoy preparando un lanzamiento para el próximo viernes-sábado.

Tareas principales establecidas:

  • Implementar el control por software de elementos y ventanas desde el lado de la aplicación de usuario.
  • Preparar/depurar la funcionalidad necesaria para que el usuario pueda trabajar con tablas.
  • Arreglar bugs graves con las pestañas y la barra de tareas.
  • Arreglar bugs menores.


  • Hacer que el motor cargue sólo los recursos seleccionados en el momento de la compilación de la "simbiosis" con la aplicación de usuario.

 
Реter Konow #:

Seguiré publicando el código de varias ventanas al día (para facilitar la comprensión).

Estoy preparando un lanzamiento para el próximo viernes-sábado.

Tareas principales establecidas:

  • Realizar el control por software de elementos y ventanas desde el lado de la aplicación de usuario.
  • Preparar/depurar la funcionalidad necesaria para que el usuario pueda trabajar con tablas.
  • Arreglar bugs graves con las pestañas y la barra de tareas.
  • Arreglar errores menores.


  • Hacer que el motor cargue sólo los recursos seleccionados en el momento de la compilación de la "simbiosis" con la aplicación de usuario.

Saludos! Sólo tengo una pregunta: ¿funciona tu librería bajo el depurador en modo visual? Específicamente, necesito sólo la reacción a las pulsaciones de botón y el arrastre de líneas horizontales estándar. En MT5 por OnChartEvent todo funciona en el depurador, en MT5 desde hace unos 7 años no pueden con el "terrible problema". Tal vez usted ha logrado eludir estos fallos?

 
Alexey Volchanskiy #:

Saludos, sólo tengo una pregunta: ¿funciona tu librería bajo el depurador en modo visual? Concretamente solo necesito reacción a pulsaciones de botones y arrastre de líneas horizontales estándar. En MT5 por OnChartEvent todo funciona en el depurador, en MT5 desde hace unos 7 años no pueden con el "terrible problema". ¿Tal vez te las arreglaste para eludir estos fallos?

Desafortunadamente, no. La interfaz no funciona en modo Debugging en MT5. No pude hacer nada al respecto.

Gracias por plantear este tema. Necesito probar el depurador en un programa escrito estándar conectado a mi motor gráfico.
 
Реter Konow #:
...


...Necesito probar el depurador en un programa escrito estándar conectado a mi motor gráfico.

Creo que el problema tiene solución. Durante la depuración el usuario desconectará el motor comentando la línea de conexión, luego redirigirá la llamada de su funcionalidad al programa vacío abriendo una línea #include especial:

//+------------------------------------------------------------------+
//|                                                  EA Shell v1.mq5 |
//|                        Copyright 2024, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//#include<(1) KIB 1.0\(4) CONNECTIONS\KIB-DRIVE CONNECTIONS.mqh>
//+------------------------------------------------------------------+
#include<(1)  KIB 1.0\DEBUG_MODE.mqh> 
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\UIDATA.mqh>
//--------------------------------------------------------------------
#include<(2)  KIB PROJECTS\(5) USER PROJECTS\Project 1\API.mqh> 
//+------------------------------------------------------------------+
 

Toda la comunicación entre el programa de usuario y el motor se realiza a través de varias funciones. En primer lugar está OnChartEvent(). También OnInit(), OnTimer(), OnDeinit(). No hay más enlaces al motor, sólo a los archivos API y UIDATA. Pero hay funcionalidad casi autosuficiente allí y si deshabilitas el motor y habilitas un par de espacios en blanco, no ocurrirá ningún error. Sólo GUI dejará de funcionar, pero no funciona en modo de depuración de todos modos.

Creo que es posible deshabilitar el motor para depurar el programa de usuario.