//+------------------------------------------------------------------+//| Verificar se o estado do botão esquerdo do mouse foi alterado//+------------------------------------------------------------------+bool CMouse::CheckChangeLeftButtonState(conststring mouse_state)
{
bool left_button_state=(bool)int(mouse_state);
//--- Envie uma mensagem sobre a alteração do estado do botão esquerdo do mouseif(m_left_button_state!=left_button_state)
::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- Retorna o estado atual do botão esquerdo do mousereturn(left_button_state);
}
//+------------------------------------------------------------------+
Passamos sparam aqui e, pelo que entendi, qualquer valor diferente de zero é tratado como um botão do mouse pressionado. Mas os valores diferentes de zero são fornecidos por todos os botões do mouse, além de Shift e Control, pelo menos.
Passamos sparam aqui e, pelo que entendi, qualquer valor diferente de zero é tratado como um botão do mouse pressionado. Mas os valores diferentes de zero são fornecidos por todos os botões do mouse, além de Shift e Control, pelo menos.
É essa a intenção?
Não, foi apenas uma solução temporária para minhas tarefas personalizadas.
Parece que ela não está sendo usada em nenhum lugar da biblioteca no momento. Pode ser aperfeiçoada, se necessário.
Não, foi apenas uma solução temporária para minhas tarefas personalizadas.
Ela não parece estar sendo usada em nenhum lugar da biblioteca no momento. Pode ser refinado, se necessário.
Ele é usado com muita frequência :) Por exemplo, arrastar janelas, deslizar rapidamente o SpinEdit. Em todos os lugares em que o estado do LKM é verificado.
Eu o fiz assim
//+------------------------------------------------------------------+//| Verificar se o estado do botão esquerdo do mouse foi alterado//+------------------------------------------------------------------+bool CMouse::CheckChangeLeftButtonState(conststring mouse_state)
{
bool left_button_state=((int)mouse_state==1);//--- Envie uma mensagem sobre a alteração do estado do botão esquerdo do mouseif(m_left_button_state!=left_button_state)
::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- Retorna o estado atual do botão esquerdo do mousereturn(left_button_state);
}
//+------------------------------------------------------------------+
O problema parece ser que estou olhando para exemplos de versões antigas!
class CProgram : public CWndEvents
{
protected:
//--- Contadores de tempo
CTimeCounter m_counter1; // para atualizar o processo de execução
CTimeCounter m_counter2; // para atualizar itens na barra de status//--- Janela principal
CWindow m_window;
//--- Imagem
CPicture m_picture1;
//--- Menu principal e seus menus de contexto
CMenuBar m_menubar;
CContextMenu m_mb_contextmenu1;
//--- Tabela de desenho//CCanvasTable m_canvas_table;//--- Cadeia de caracteres de status
CStatusBar m_status_bar;
О том, для чего предназначена эта библиотека, более подробно можно прочитать в самой первой статье: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1). В конце статей каждой части представлен список глав со ссылками. Там же есть возможность загрузить к себе на компьютер полную версию библиотеки на текущей стадии разработки...
Criei um indicador simples, mas útil, para o MICEX.
O indicador é composto por: ações, % de crescimento para o dia e, em seguida, os dados padrão, volumes para comprar desde o início do dia BuyVol, volumes para vender SellVol, diferença VolDelta em volumes desde o início do dia, e terminarei com a % da diferença atual em volumes.
delta verde - é desejável manter a compra ou tentar procurar um ponto de entrada de compra, etc.
Uma vez que a biblioteca foi bastante reformulada, não me lembro do número da compilação. É provável que não haja CCanvasTable nas novas compilações :)
Nas conclusões dos artigos, há um esquema geral da biblioteca na época do lançamento, que você pode comparar.
string m_header_text; // Texto do cabeçalho da colunacolor m_header_color; // Cor do texto do cabeçalho da coluna //André
CTCell m_rows[]; // Matriz das linhas da tabela
----------------------------------------------------------------------------------------------------------------------
void HeadersColorPressed(constcolor clr) { m_headers_color_pressed=clr; }
//void HeadersTextColor(const colour clr){ m_headers_text_color=clr; } //André
----------------------------------------------------------------------------------------------------------
void SetHeaderText(constuint column_index,conststring value);
//--- Definindo a cor do texto para o cabeçalho especificado //Andrévoid HeadersTextColor(constcolor &array[]);
--------------------------------------------------------------------------------------------------------------------
//André //+------------------------------------------------------------------+//| Preenche a matriz de modos de alinhamento de texto//+------------------------------------------------------------------+void CTable::HeadersTextColor(constcolor &array[])
{
int total=0;
//--- Sair, se uma matriz de tamanho zero foi passadaif((total=CheckArraySize(array))==WRONG_VALUE)
return;
//--- Armazene o valor na matrizfor(int c=0; c<total; c++)
m_columns[c].m_header_color=array[c];
}
------------------------------------------------------------------------------------------------------------------------
//André//--- Cor do textouint clr=::ColorToARGB(m_columns[c].m_header_color);
Em Window.mqh
//--- Manipulação do evento de clicar nos botões do formulárioif(id==CHARTEVENT_CUSTOM+ON_CLICK_BUTTON)
{
//Andréif(StringFind(sparam, CElementBase::ProgramName(), 0)<0)
return;
//--- Feche a janela
-------------------------------------------------------------------------------
int subwin=(CElementBase::ProgramType()==PROGRAM_INDICATOR)? ::ChartWindowFind() : m_subwin;
//--- Enviar uma mensagem sobre isso//André//Print(__FUNCTION__, " " ", subwin, " ", PROGRAM_NAME);//::EventChartCustom(m_chart_id,ON_WINDOW_COLLAPSE,CElementBase::Id(),subwin,"");
::EventChartCustom(m_chart_id,ON_WINDOW_COLLAPSE,CElementBase::Id(),subwin, PROGRAM_NAME);
//--- Enviar uma mensagem sobre a alteração na interface gráfica
::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");
}
---------------------------------------------------------------------------------------
int subwin=(CElementBase::ProgramType()==PROGRAM_INDICATOR)? ::ChartWindowFind() : m_subwin;
//--- Enviar uma mensagem sobre isso//André//::EventChartCustom(m_chart_id,ON_WINDOW_EXPAND,CElementBase::Id(),subwin,"");
::EventChartCustom(m_chart_id,ON_WINDOW_EXPAND,CElementBase::Id(),subwin,PROGRAM_NAME);
//--- Enviar uma mensagem sobre a alteração na interface gráfica
::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");
No arquivo WndEvents.mqh.
return(false);
//--- Se o identificador da janela e o número da subjanela coincidirem//Andréif(m_sparam!=m_windows[0].ProgramName())
return(false);
if(m_lparam==m_windows[0].Id() && (int)m_dparam==m_subwin)
Comentei as linhas com meu nome para facilitar a localização
Em anexo estão os arquivos com o código completo modificado.
Boa noite.
Mouse.mqh.
Passamos sparam aqui e, pelo que entendi, qualquer valor diferente de zero é tratado como um botão do mouse pressionado. Mas os valores diferentes de zero são fornecidos por todos os botões do mouse, além de Shift e Control, pelo menos.
É assim que se pretende fazer?
Boa noite.
Mouse.mqh
Passamos sparam aqui e, pelo que entendi, qualquer valor diferente de zero é tratado como um botão do mouse pressionado. Mas os valores diferentes de zero são fornecidos por todos os botões do mouse, além de Shift e Control, pelo menos.
É essa a intenção?
Não, foi apenas uma solução temporária para minhas tarefas personalizadas.
Parece que ela não está sendo usada em nenhum lugar da biblioteca no momento. Pode ser aperfeiçoada, se necessário.
Não, foi apenas uma solução temporária para minhas tarefas personalizadas.
Ela não parece estar sendo usada em nenhum lugar da biblioteca no momento. Pode ser refinado, se necessário.
Eu o fiz assim
Não, foi apenas uma solução temporária para minhas tarefas personalizadas.
Ela não parece estar sendo usada em nenhum lugar da biblioteca no momento. Pode ser aperfeiçoada, se necessário.
Na versão mais recente - https://www.mql5.com/pt/code/19703
não é possível adicionar
//CCanvasTable m_canvas_table;O problema parece ser que estou olhando para exemplos de versões antigas!
Na versão mais recente - https://www.mql5.com/pt/code/19703
falha ao adicionar
O problema parece ser que estou olhando para exemplos de versões mais antigas!
Eu tenho a versão Build 10, https://www.mql5.com/pt/articles/3042 funciona lá!
Tive que fazer algo parecido com isso, o que não é bom.
MQL5\Include\EasyAndFastGUI_B10
MQL5\Include\EasyAndFastGUI_B16
Biblioteca maravilhosa!
Criei um indicador simples, mas útil, para o MICEX.
O indicador é composto por: ações, % de crescimento para o dia e, em seguida, os dados padrão, volumes para comprar desde o início do dia BuyVol, volumes para vender SellVol, diferença VolDelta em volumes desde o início do dia, e terminarei com a % da diferença atual em volumes.
delta verde - é desejável manter a compra ou tentar procurar um ponto de entrada de compra, etc.
Tenho a versão Build 10, https://www.mql5.com/pt/articles/3042 funciona lá!
Eu tive que fazer algo assim, o que não é bom.
MQL5\Include\EasyAndFastGUI_B10
MQL5\Include\EasyAndFastGUI_B16.
Obrigado pela mensagem. Não tenho tempo no momento. Verei um pouco mais tarde qual pode ser o problema.
Tenho a versão Build 10, https://www.mql5.com/pt/articles/3042 funciona lá!
Eu tive que fazer algo assim, o que não é bom.
MQL5\Include\EasyAndFastGUI_B10
MQL5/Include/EasyAndFastGUI_B16
Uma vez que a biblioteca foi bastante reformulada, não me lembro do número da compilação. É provável que não haja CCanvasTable nas novas compilações :)
Nas conclusões dos artigos, há um esquema geral da biblioteca na época do lançamento, que você pode comparar.
Não é possível colorir uma coluna usando a função de tabela?
Se você adicionar dois indicadores.
Sou do Brasil e usei um tradutor para escrever. Peço desculpas por qualquer erro neste idioma.
No arquivo Table.mqh
Em Window.mqh
No arquivo WndEvents.mqh.
Comentei as linhas com meu nome para facilitar a localização
Em anexo estão os arquivos com o código completo modificado.
Espero que tenha ajudado