Discussão do artigo "Interfaces gráficas X: Seleção de texto na caixa de texto multilinha (build 13)" - página 12

 
Konstantin:

...

Farei tudo o que você escreveu nas postagens anteriores.
 
Adicione imagens à biblioteca EasyAndFastGUI/MQL5/Images/EasyAndFastGUI/Icons/bmp16. Para os arbitradores de "duas pernas", isso será útil não apenas para mim))
Arquivos anexados:
 
Anatoli Kazharski:
@Pavel Kolchin, para evitar que as setas dos negócios fiquem suspensas acima do painel, use o método CWndEvents::ResetWindow().
Onde inseri-lo?
 
Pavel Kolchin:
onde colocá-lo?
Tente OnTrade().
 
Anatoli Kazharski:
Tente OnTrade().


Não consigo, ele falha.

Esse evento não existe no arquivo de menu, mas se você o inserir no arquivo principal, ele falhará.

 
Pavel Kolchin:


Não consigo, ele falha

Esse evento não existe no arquivo de menu, mas se você o colar no arquivo principal, ele falhará.

Você precisa criar um método CProgram::OnTradeEvent() na classe do aplicativo personalizado.

E, no arquivo principal, ele deve ser chamado na função OnTrade():

//+------------------------------------------------------------------+
//| Função comercial|
//+------------------------------------------------------------------+
void OnTrade(void)
  {
   program.OnTradeEvent();
  }

//---

Por exemplo, tenho este conteúdo do método CProgram::OnTradeEvent():

//+------------------------------------------------------------------+
//| Evento de transação comercial|
//+------------------------------------------------------------------+
void CProgram::OnTradeEvent(void)
  {
//--- Envio de um evento de negociação para todos os gráficos
   m_events.SendEventToAllCharts(0,ON_TRADE_EVENT,0,0.0,m_program_name);
//--- Definir as transações da última posição
   if(m_show_deals.CheckButtonState())
      if(m_vdeals.ShowDealsLastPosition())
         ResetWindow();
//--- Verificando a distância do stop loss
   if(m_trailing_stop.CheckButtonState())
      m_ctrade.CheckStopLossSize(::Symbol());
//--- Zeragem de variáveis para operações comerciais
   m_ctrade.ZeroCalcPositionVariables();
//--- Inicialização da matriz de saldo e atualização da série no gráfico
   InitBalanceArray();
   m_line_chart.SeriesUpdate(0,m_balance_data,"Balance",clrCornflowerBlue);
  }
 
Anatoli Kazharski:


Adicione um pouco mais por cima
public:
   //--- Comércio
   void              OnTradeEvent(void);
e tudo funcionará)
 
Não consigo descobrir como vincular o elemento_2, por exemplo, uma tabela à borda inferior do elemento_1, por exemplo, a mesma tabela, ou seja, o elemento_1 está acima do elemento_2. Como resultado, é necessário que, quando o tamanho do gráfico for alterado, o limite inferior do elemento_1 seja deslocado e o limite superior do elemento_2 seja deslocado depois dele. A biblioteca tem os métodos AutoYResizeMode e AutoYResizeBottomOffset, mas não consigo descobrir como implementar o deslocamento das bordas superiores.
 
Konstantin:
Não consigo descobrir como vincular o elemento_2, por exemplo, uma tabela, à borda inferior do elemento_1, por exemplo, a mesma tabela, ou seja, o elemento_1 está acima do elemento_2. Como resultado, é necessário que, quando o tamanho do gráfico for alterado, o limite inferior do elemento_1 seja deslocado e o limite superior do elemento_2 seja deslocado depois dele. Há métodos AutoYResizeMode e AutoYResizeBottomOffset na biblioteca, mas não consigo descobrir como implementar o deslocamento dos limites superiores.

Também há métodos para vincular elementos:

   //--- Modo (get/set) de vincular um elemento à (1) borda direita e (2) inferior da janela
   bool              AnchorRightWindowSide(void)               const { return(m_anchor_right_window_side);   }
   void              AnchorRightWindowSide(const bool flag)          { m_anchor_right_window_side=flag;      }
   bool              AnchorBottomWindowSide(void)              const { return(m_anchor_bottom_window_side);  }
   void              AnchorBottomWindowSide(const bool flag)         { m_anchor_bottom_window_side=flag;     }

//---

Tente resolver o problema em combinação com essas propriedades.

 
Anatoli Kazharski:

Há mais métodos para vincular elementos:

//---

Em combinação com essas propriedades, tente resolver o problema.


Sim, eu tentei, mas já quebrei a cabeça, entendi que os métodos X(...) e Y(...) vinculam rigidamente os elementos às coordenadas X e Y e, ao receber eventos sobre a alteração do tamanho da janela principal do formulário, eles não reagem de forma alguma à localização das coordenadas X e Y.