Galeria de UIs escritas em MQL - página 46

 
Edgar Akhmadeev #:

...

Obrigado por sua opinião detalhada.

Tentarei resolver seu problema com a janela dinâmica - complexidade da disposição das tabelas.

Deixe-me explicar da seguinte forma: uma janela dinâmica de tela cheia tem uma finalidade especial na GUI do usuário e, como consequência, tem limitações específicas. Ela não é universal, como a janela "SETTINGS". E isso é lógico. Afinal de contas, tudo o que é especificamente "personalizado" é sempre limitado de alguma forma.

No entanto, uma tabela dinâmica ou uma lista infinita pode ser combinada com outros grupos de elementos em uma janela dinâmica e não precisa de um espaço separado e "exclusivo", embora, na minha opinião, seja mais conveniente. Como realizar a compatibilidade das tabelas com outros grupos? - Essa é uma questão de tecnologia.

Para fins de experiência, pegarei suas tabelas e tentarei inseri-las em uma janela de tela cheia. É claro que preciso corrigir o código...

Resultado:

(Clique na imagem)


Não publicarei o código ainda, porque, francamente, tudo está muito "cru". Tive que usar truques e "muletas". Mas, como você pode ver, tudo pode funcionar.

 
Edgar Akhmadeev #:
...

7. Mais uma coisa. Sua janela dinâmica é uma janela de pares que pode ser expandida e minimizada. Eu não gostaria de uma janela, mas de uma área de trabalho. Como seu construtor. Para que ele

a) abra imediatamente expandida, cobrindo todo o gráfico

b) não tenha um cabeçalho e um quadro (apenas uma barra de tarefas)

c) não poderia ser recolhido

d) permitia colocar elementos como uma janela normal

Ou seja, substitua DINAMIC por FULLSCREEN ou DESKTOP. Você já tem a base para isso.


Após o lançamento da janela dinâmica, pensarei nessa opção, pois entendo que ela é razoável em condições de tela pequena de laptop.
 
Реter Konow #:
Continuarei um pouco mais tarde.

Código KIB das janelas incluídas na versão (continuação):

//----------------------------------------------------------------------------------
//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,
//----------------------------------------------------------------------------------
 

Continuarei publicando o código de várias janelas por dia (para facilitar a compreensão).

Estou preparando uma versão para a próxima sexta-feira e sábado.

Principais tarefas definidas:

  • Implementar o controle de software de elementos e janelas do lado do aplicativo do usuário.
  • Preparar/depurar a funcionalidade necessária para que o usuário trabalhe com tabelas.
  • Corrigir erros graves com guias e barra de tarefas.
  • Corrigir erros menores.


  • Fazer com que o mecanismo carregue apenas os recursos selecionados no momento da compilação da "simbiose" com o aplicativo do usuário.

 
Реter Konow #:

Continuarei publicando o código de várias janelas por dia (para facilitar a compreensão).

Estou preparando uma versão para a próxima sexta-feira e sábado.

Principais tarefas definidas:

  • Realizar o controle de software de elementos e janelas do lado do aplicativo do usuário.
  • Preparar/depurar a funcionalidade necessária para que o usuário trabalhe com tabelas.
  • Corrigir erros graves nas guias e na barra de tarefas.
  • Corrigir erros menores.


  • Fazer com que o mecanismo carregue apenas os recursos selecionados no momento da compilação da "simbiose" com o aplicativo do usuário.

Saudações! Tenho apenas uma pergunta: sua biblioteca funciona com o depurador no modo visual? Especificamente, preciso apenas de reação ao pressionamento de botões e ao arrastamento de linhas horizontais padrão. No MT5, por meio do OnChartEvent, tudo funciona no depurador; no MT5, há cerca de 7 anos, eles não conseguem lidar com o "terrível problema". Talvez você tenha conseguido contornar essas falhas?

 
Alexey Volchanskiy #:

Saudações, tenho apenas uma pergunta: sua biblioteca funciona no depurador em modo visual? Especificamente, eu só preciso reagir ao pressionamento de botões e ao arrastamento de linhas horizontais padrão. No MT5, por meio do OnChartEvent, tudo funciona no depurador; no MT5, há cerca de 7 anos, eles não conseguem lidar com o "terrível problema". Talvez você tenha conseguido contornar essas falhas?

Infelizmente, não. A interface não funciona no modo de depuração no MT5. Não pude fazer nada a respeito.

Obrigado por levantar esse tópico. Preciso testar o depurador em um programa escrito padrão conectado ao meu mecanismo gráfico.
 
Реter Konow #:
...


... Preciso testar o depurador em um programa escrito padrão conectado ao meu mecanismo gráfico.

Acho que o problema é bastante solucionável. Durante a depuração, o usuário desconectará o mecanismo comentando a linha de conexão e, em seguida, redirecionará a chamada de sua funcionalidade para o programa vazio, abrindo uma linha #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 a comunicação entre o programa do usuário e o mecanismo é feita por meio de várias funções. A primeira delas é OnChartEvent(). Também OnInit(), OnTimer(), OnDeinit(). Não há mais links para o mecanismo, apenas para os arquivos API e UIDATA. Mas há uma funcionalidade quase autossuficiente e, se você desativar o mecanismo e ativar alguns espaços em branco, não ocorrerão erros. Apenas a GUI deixará de funcionar, mas ela não funciona no modo de depuração.

Acho que é possível desativar o mecanismo para depurar o programa do usuário.