Discussão do artigo "Interfaces Gráficas XI: Controles renderizados (build 14.2)" - página 4

 
Facundo Laje:
Agradecimentos
 
zlory73:

Desculpe, modificado:

e:

ainda nada...

Por favor, me ajude1


Olá,

Resolvi esses problemas usando a função OpenWindow() em vez da função Show(), e agora também tenho o botão de recolhimento ativado.

Agora, gostaria de adicionar alguns controles à window2 e à window3, como botões e caixas de seleção, mas recebi um erro como o da imagem a seguir:

Não me incomodo muito com os erros de leitura de imagem... Apenas com o acesso ao ponteiro... o erro é da linha:

CWndContainer::AddToElementsArray(1,m_checkbox1);

Acho que o window_index deve ser 0 para a janela principal, 1 para a janela2 e 2 para a janela3, certo?

Usando uma das bibliotecas anteriores (article06), não tive problemas para adicionar controles a uma subjanela.

Agora, o código para adicionar controles:

//------------------CheckBox---------------
  bool CmyPanel_Test2::CreateCheckBox1(const int x_gap,const int y_gap,string text)
  {
//--- Armazene o ponteiro para o controle principal
   m_checkbox1.MainPointer(m_window2);
//--- Definir propriedades antes da criação
   m_checkbox1.XSize(40);
   m_checkbox1.YSize(20);
   m_checkbox1.IsPressed(false);

//--- Criar um controle
   if(!m_checkbox1.CreateCheckBox("box1",x_gap,y_gap))
      return(false);
//--- Adicione o objeto à matriz comum de grupos de objetos
    CWndContainer::AddToElementsArray(1,m_checkbox1);
   return(true);
  }
//---------------Button---------- 
  bool CmyPanel_Test2::CreateIconButton1(const int x_gap,const int y_gap,const string text)
  {
//--- Armazene o ponteiro para o controle principal
   m_icon_button1.MainPointer(m_window2);
//--- Propriedades
   m_icon_button1.XSize(115);
   m_icon_button1.YSize(22);
   m_icon_button1.IconXGap(3);
   m_icon_button1.IconYGap(3);
   m_icon_button1.TwoState(true);
   m_icon_button1.IconFile("Images\\EasyAndFastGUI\\Icons\\bmp16\\stop.bmp");
   m_icon_button1.IconFileLocked("Images\\EasyAndFastGUI\\Icons\\bmp16\\stop_gray.bmp");
   m_icon_button1.IconFilePressed("Images\\EasyAndFastGUI\\Icons\\bmp16\\start.bmp");
   m_icon_button1.IconFilePressedLocked("Images\\EasyAndFastGUI\\Icons\\bmp16\\start_gray.bmp");
//--- Criar um controle
   if(!m_icon_button1.CreateButton(text,x_gap,y_gap))
      return(false);
//--- Adicione o ponteiro do controle à base
   CWndContainer::AddToElementsArray(1,m_icon_button1);
   return(true);
  }

Se alguém puder ajudar, obrigado...


PS: Espero não estar sendo chato com meus tópicos. Tenha um bom dia.

 
Adicione o analista 327836497 para obter um retorno de 74,5%.
 
Artur Zas:

Olá, o conjunto de controles é muito bom e útil, mas seria ainda melhor se você pudesse lidar melhor com configurações de DPI mais altas.

Obviamente, os bitmaps serão exibidos corretamente, mas o texto não. ...


Eu diria que o texto é dimensionado corretamente, ao contrário de todo o restante dos gráficos.

 
Ex Ovo Omnia:

Eu diria que o texto está dimensionado corretamente, ao contrário de todo o restante dos gráficos.


Isso depende de como você olha para ele. Você pode aumentar a escala dos bitmaps para corresponder ao tamanho da fonte ou diminuir o tamanho da fonte para corresponder ao tamanho dos bitmaps.

Aumentar a escala dos bitmaps não é algo que você queira fazer porque, ao contrário dos gráficos vetoriais, os bitmaps perderão qualidade quando aumentados. A fonte, por outro lado, é baseada em vetor e, portanto, pode ser dimensionada para cima e para baixo sem perda de qualidade.

Obviamente, a melhor maneira de lidar com o problema seria usar gráficos vetoriais, mas não acho que a plataforma ofereça suporte a isso (embora eu possa estar errado, pois não trabalho com gráficos no Metatrader).

Pessoalmente, reduzo a fonte proporcionalmente para corresponder ao DPI.

De qualquer forma, seria bom se os controles pudessem lidar com isso por padrão para que não precisássemos nos preocupar com isso.

 
Artur Zas:

Isso depende de como você vê a questão. Você pode aumentar a escala dos bitmaps para corresponder ao tamanho da fonte ou diminuir o tamanho da fonte para corresponder ao tamanho dos bitmaps.

Aumentar a escala dos bitmaps não é algo que você queira fazer porque, ao contrário dos gráficos vetoriais, os bitmaps perderão a qualidade quando aumentados. A fonte, por outro lado, é baseada em vetor e, portanto, pode ser dimensionada para cima e para baixo sem perda de qualidade.

Obviamente, a melhor maneira de lidar com o problema seria usar gráficos vetoriais, mas não acho que a plataforma ofereça suporte a isso (embora eu possa estar errado, pois não trabalho com gráficos no Metatrader).

Pessoalmente, reduzo a fonte proporcionalmente para corresponder ao DPI.

De qualquer forma, seria bom se os controles pudessem lidar com isso por padrão para que não precisássemos nos preocupar com isso.


Não estou contradizendo as dificuldades de dimensionamento da imagem, apenas percebo que a alteração do tamanho da fonte corresponde à GUI do aplicativo Metatrader dimensionada. Portanto, se você diminuir o tamanho da fonte, poderá deixar as letras bem pequenas no monitor de alta resolução.

 
Ex Ovo Omnia:

Não contradigo as dificuldades de dimensionamento da imagem, apenas percebo que a alteração do tamanho da fonte corresponde à GUI do aplicativo Metatrader dimensionada. Portanto, se você diminuir o tamanho da fonte, poderá deixar as letras bem pequenas no monitor de alta resolução.

Sim, eu concordo. Seria melhor fazer com que os gráficos correspondessem ao tamanho da fonte, o que de fato corresponde à GUI do MT5 em escala. Eu estava apenas procurando uma maneira de melhorar a aparência, de modo que o tamanho da fonte correspondesse ao restante dos gráficos.

Acho que isso é o melhor que podemos obter em um ambiente misto de gráficos raster e vetoriais.

 

Olá, estou feliz em ver seu trabalho de desenvolvimento, mas encontrei um problema, explique-o quando tiver tempo. Pergunta: Controle de árvore, como adicionar ao tipo de guia, ele não funciona quando o defino no modo de guia. Não consigo adicionar o componente à guia. Obrigado! Aguardamos sua mensagem.

 

Por que o 14-2 não aparece se você pode fazer isso na versão 10?

 

Olá, na nova versão da parte de saída de edição de controle, o teclado do lado direito do teclado numérico apresenta mau funcionamento, os números de entrada não respondem, somente no lado esquerdo da entrada numérica.