Criar uma biblioteca gráfica a partir do zero - página 10

 
Aliaksandr Hryshyn:

No meu caso, a "selva" não é mais complicada do que a média: uma janela de exibição (área visível da mesa), uma janela em tamanho real na qual todas as células devem caber, ela deslizará dentro da janela principal, janelas para filas e células nelas, mais rolagem (um deslizador delimitado por uma barra). As restrições de posicionamento relativo são determinadas pelas propriedades. Somente para o controle deslizante é necessário interceptar eventos de movimento de objetos e já corrigir a posição da"janela de tamanho completo".Tudo isso é feito por janelas virtuais, precisamos aparafusar parte visual a ela, sem parte visual haverá janelas para linhas e janelas em tamanho real. E para uma célula editável, faça um campo de entrada (este é personalizado), todas as outras coisas serão tratadas pelo motor - ele terá os eventos certos para cada célula (eventos do mouse, redesenho, movimentação)..... Estas são possibilidades, mas há também algumas idéias para aumentar o desempenho caso haja muitas janelas (grandes listas, mesas, alguns milhares de janelas).

Você o faz..... e vamos conversar. :)))

Se você notar, esta linha evoluiu a partir da minha linha gui guiada de origem multíplice, onde demonstrei uma linguagem de marcação e um editor de visi. Alguns usuários do fórum pensaram que poderiam replicar tudo melhor e mais bonito em sua biblioteca. O tema baixou após 4 páginas. E ainda está lá. E aqui você está, como eles, falando de "mil janelas"... em suma, faça isso finalmente.)))))

Boa sorte. ))))
 
Vou descrever um pouco as tabelas:

1. Uma célula é o elemento mais simples de uma tabela e consiste em três objetos: uma etiqueta, um texto e um ícone.

2. Existem vários tipos de células: cabeçalhos de coluna, cabeçalhos de linha e os de dentro. É importante separá-los, pois as células de cabeçalho trazem informações sobre as linhas/colunas (essencialmente suas propriedades). Isto facilita o trabalho com a mesa.

3. Cada célula comum tem um parâmetro cujo valor sai, mas existem apenas células de texto, sem um parâmetro. Este é um tipo diferente.

3. As propriedades das células devem ser configuráveis seletivamente: como para a linha inteira, para uma coluna, ou para toda a tabela.

4. As propriedades das células de cabeçalho devem ser configuradas separadamente.

5. A tabela deve "ser capaz" de adaptar outros elementos, tais como: caixas de seleção, listas pop-up, ... até mesmo deslizadores, barras de progresso e botões de rádio.

6. A tabela deve ser otimizada para redesenhar apenas as células com valores alterados, e não todas elas.

7. A tabela deve rolar se colocada em um campo de visão limitado.

8. A mesa pode ter rolos de peças.

9. As colunas da tabela podem mudar sua largura.

10. A tabela pode ser dinâmica, quando o número de filas não está predeterminado.

11. A mesa deve ser classificável.

12. A tabela deve poder ser colorida em sua totalidade, ou por linhas/colunas selecionadas.

Deus proíbe fazer uma tabela sobre retângulos simples e textos, pois tais "células" não são elementos e este é um caminho sem saída.

Eu tenho estas coisas implementadas. Embora não seja perfeito em tudo.... Mas eles funcionam e estão bem.

Uma mesa é definitivamente um dos elementos mais complexos. O mais complexo, envolvendo muitos mecanismos e diferentes soluções.
 
Essa é a tabela)))) Lembro-me que Anatoly foi o primeiro a fazê-lo em tela. Ele passou um mau bocado... Ele implementou muitas coisas muito bem, podia-se ter ficado com inveja.
 
Реter Konow:
Essa é a tabela)))) Lembro-me que foi feito pela primeira vez em lona por Anatoly. Ele passou um mau bocado... Ele implementou muitas coisas muito bem, pode-se ter ficado com ciúmes.

Nós não o fazemos parecer bonito, nós o tornamos funcional. Lentamente estou fazendo os objetos certos, e a abordagem é diferente de outras soluções. Qualquer objeto pode ser colocado em células de mesa. Acrescentei ao suporte do motor para Kanvas, de modo que se verifica que tanto Kanvas como retângulos regulares são utilizados. Uma demonstração é anexada.

Arrastar e soltar pode ser feito no canto superior esquerdo em branco.


Arquivos anexados:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn:

Nós não o fazemos parecer bonito, nós o tornamos funcional. Lentamente estou fazendo os objetos certos, e a abordagem é diferente de outras soluções. Qualquer objeto pode ser colocado em células de mesa. Acrescentei ao suporte do motor para Kanvas, de modo que se verifica que tanto Kanvas como retângulos regulares são utilizados. Uma demonstração é anexada.

Arrastar e soltar pode ser feito no canto superior esquerdo em branco.


Nada mal, nada mal...

A crítica primeiro:

Conceitualmente, é uma grande janela, ou várias pequenas moldadas juntas? Infelizmente, não há mobilidade da(s) janela(s). A mecânica funciona de forma um pouco estranha, há mais em que pensar. Não encontrei nenhuma maneira de colocar nada nas células, elas não são interativas. Até agora, não há controles de funcionamento, nem mesmo um simples botão ou caixa de seleção. Estruturalmente, as janelas não são elaboradas - sem moldura, sem botão de minimizar ou diminuir o zoom, sem ícone médio... Mesmo sem desempenhar suas funções, e por uma questão de decoração, vale a pena colocá-las, pois, caso contrário, não está claro o que estamos vendo. É claro que... muito cru.

Louvor:

Apesar das deficiências, vejo muito progresso e potencial. É claro que, se você tiver paciência e força suficientes, algo pode dar certo no final. Bem, o talento está, sem dúvida, lá).


P.S. satisfeito com a rolagem (embora coxa) e, embora limitada, mas "emborrachada", do peitoril da janela. :)))

P.S.S. Desculpe, as subjanelas podem ser movidas! Não descobri a princípio. É claro que o espaço em movimento é severamente limitado, mas ainda assim...
 
Outra vantagem: o rótulo "A" (quem sabe por quê) é interativo! Isto já é uma coisa boa.
 

Infelizmente, minhas janelas não estão posicionadas como deveriam estar após o carregamento:


Tentar colocá-los no centro não é bem sucedido.
 
Реter Konow:

Nada mal, nada mal...

A crítica primeiro:

Conceitualmente, é uma grande janela, ou várias pequenas moldadas juntas? Infelizmente, não há mobilidade da(s) janela(s). A mecânica funciona de forma um pouco estranha, há mais em que pensar. Não encontrei nenhuma maneira de colocar nada nas células, elas não são interativas. Até agora, não há controles de funcionamento, nem mesmo um simples botão ou caixa de seleção. Estruturalmente, as janelas não são elaboradas - sem moldura, sem botão de minimizar ou diminuir o zoom, sem ícone médio... Mesmo sem desempenhar suas funções, e por uma questão de decoração, vale a pena colocá-las, pois, caso contrário, não está claro o que estamos vendo. É claro que... muito cru.

Louvor:

Apesar das deficiências, vejo muito progresso e potencial. É claro que, se você tiver paciência e força suficientes, algo pode dar certo no final. Bem, o talento está, sem dúvida, lá).


P.S. satisfeito com a rolagem (embora coxa) e, embora limitada, mas "emborrachada", do peitoril da janela. :)))

P.S.S. Desculpe, as subjanelas podem ser movidas! Não descobri a princípio. É claro que o espaço em movimento é severamente limitado, mas ainda assim...

Aqui todas as janelas (geral, células, rolante, deslizante para rolante....) têm o mesmo princípio de trabalho, apenas propriedades diferentes, diferem apenas na representação visual, existem também janelas invisíveis, portanto a visualização do vidro pode ser colocada em qualquer janela, mesmo em deslizante ou pequeno quadrado vermelho, não há diferença.

Os vidros nas células são interativos como no indicador (movimento do próprio vidro sobre o carrapato e cabeçalho, movimento vertical do preço), apenas os eventos de rolagem da roda são tratados pela rolagem correta da mesa.

Esta tabela servirá como elemento visual básico para criar diferentes listas e tabelas, não importa o que é colocado dentro da célula, você pode ter diferentes objetos ou mesmo a mesma tabela

 
Реter Konow:
Outra vantagem: a etiqueta "A" (quem sabe por quê) é interativa! Isto já é uma coisa boa.

Você testou o indicador de tumbler? Esta é uma chave liga/desliga para rolagem automática de preços

 
Aliaksandr Hryshyn:

Você testou o indicador de tumbler? É uma chave liga/desliga para rolagem automática de preços

Sim, o próprio secador e o indicador de carrapato estão bem feitos. Eles têm o menor número de reclamações. Você mesmo o escreveu ou pediu emprestado de algum outro lugar?