Discussão do artigo "Interfaces Gráficas X: Os Controles Horário, Lista de Caixas de Seleção e Tabela Ordenada (build 6)" - página 3
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Quero dizer, no site, no artigo - talvez lá o antigo tenha sido adicionado às atualizações. Peguei o arquivo da última atualização, baixado do site na parte inferior do artigo a partir do zip.
Aqui, fiz as correções conforme escrevi acima:
Ah, que bom. Caso contrário, você poderia ter algo pregado ali, como já aconteceu muitas vezes. ) Mas vou me lembrar disso.
Você está me forçando a fazer algo estúpido.
Pequeno, mas você pode ver.
E você poderia simplesmente carregá-lo e olhar dentro dele - é fácil, especialmente porque você foi informado sobre isso.
Você está me forçando a fazer algo estúpido.
É pequeno, mas você pode vê-lo.
Você mesmo poderia ter feito o download e olhado dentro dele, é fácil, especialmente porque você foi informado sobre ele.
Eu não lhe pedi nenhuma prova. Apenas disse que não me esquecerei disso. Mas ainda não o reproduzi. Vou pensar nisso.
Se houver um problema, sua correção pode não funcionar em todos os casos. Ela funciona no seu caso, mas você precisa testar todos os modos. Eu mesmo farei isso se encontrar um problema.
Realmente, não faça bobagem. )
Eu não lhe pedi nenhuma prova. Apenas disse que não me esqueceria disso. Mas ainda não a reproduzi. Vou pensar nisso.
Se houver um problema, sua correção pode não funcionar em todos os casos. Ela funciona no seu caso, mas você precisa testar todos os modos. Eu mesmo farei isso se encontrar um problema.
Realmente, não faça bobagem. )
Ok, não farei ;)
Tol, pergunta: as tabelas são classificadas por colunas - tudo está normal. Mas..., se a tabela tiver linhas vazias, e houver muitas delas, a classificação também incluirá essas linhas vazias. Digamos que haja uma tabela com mil linhas (1001 - zero para o cabeçalho), de acordo com o número máximo de caracteres na visão geral do mercado. Mas, no momento, há apenas 10 caracteres na visão geral do mercado. Todos eles estão na tabela em suas primeiras dez linhas - da primeira à décima. O restante das linhas está vazio (as tabelas não são dinâmicas e os símbolos podem ser adicionados/removidos de/para a tabela). Se você tentar classificar essa tabela, a lista classificada irá até o final da tabela, até as linhas 990 - 1000 (zero - o cabeçalho), e você poderá ver as linhas vazias na parte superior. Isso não é bom e, na minha opinião, é uma omissão.
... as tabelas não são dinâmicas e os caracteres podem ser adicionados/removidos de/para a tabela...
Em breve será dinâmico. Estou no meio disso agora.
... E o problema de incluir linhas completamente vazias na lista ordenada? O que fazer com isso?
Por enquanto, permanecerá assim. Não vou voltar a classificar tão cedo.
...
O mesmo acontece com a linha de separação no menu de contexto em ContextMenu.mqh - a barra de separação entre os itens de menu não está em suas coordenadas.
No método:
//| Cria uma linha divisória|
//+------------------------------------------------------------------+
bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y)
{
//--- Salvar o ponteiro do formulário
m_sep_line[line_number].WindowPointer(m_wnd);
//--- Definir propriedades
m_sep_line[line_number].TypeSepLine(H_SEP_LINE);
m_sep_line[line_number].DarkColor(m_sepline_dark_color);
m_sep_line[line_number].LightColor(m_sepline_light_color);
m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side);
m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);
//--- Criando uma linha divisória
if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x,y,m_x_size-10,2))
return(false);
//--- Salvar o ponteiro do objeto
CElement::AddToArray(m_sep_line[line_number].Object(0));
return(true);
}
//+------------------------------------------------------------------+
substitui o destacado por
//| Cria uma linha divisória|
//+------------------------------------------------------------------+
bool CContextMenu::CreateSeparateLine(const int line_number,const int x,const int y)
{
//--- Salvar o ponteiro do formulário
m_sep_line[line_number].WindowPointer(m_wnd);
//--- Definir propriedades
m_sep_line[line_number].TypeSepLine(H_SEP_LINE);
m_sep_line[line_number].DarkColor(m_sepline_dark_color);
m_sep_line[line_number].LightColor(m_sepline_light_color);
m_sep_line[line_number].AnchorRightWindowSide(m_anchor_right_window_side);
m_sep_line[line_number].AnchorBottomWindowSide(m_anchor_bottom_window_side);
//--- Criando uma linha divisória
if(!m_sep_line[line_number].CreateSeparateLine(m_chart_id,m_subwin,line_number,x-m_wnd.X(),y-m_wnd.Y(),m_x_size-10,2))
return(false);
//--- Salvar o ponteiro do objeto
CElement::AddToArray(m_sep_line[line_number].Object(0));
return(true);
}
//+------------------------------------------------------------------+
e a barra de separação está em seu lugar.
O mesmo ocorre com a linha de separação no menu de contexto em ContextMenu.mqh - a linha de separação entre os itens de menu não está em suas coordenadas.
Reproduzi todos esses casos. Isso se aplica a todos os itens que são usados como componentes em outros itens. Ele é detectado quando as coordenadas absolutas iniciais do formulário, ao criar a GUI, são maiores que (1,1).
A correção será feita na próxima compilação. Como uma correção rápida temporária, (1) seus exemplos ou (2) apenas definir inicialmente o formulário nas coordenadas (1,1) funcionarão. A segunda opção é melhor, pois pode incluir outros modos de posicionamento de elementos.