Crear una biblioteca gráfica desde cero - página 10

 
Aliaksandr Hryshyn:

En mi caso, la "jungla" no es más complicada que la media: una ventana de visualización (área visible de la tabla), una ventana de tamaño completo en la que deben caber todas las celdas, que se deslizará dentro de la ventana principal, ventanas para las filas y celdas en ellas, además del desplazamiento (un deslizador delimitado por una barra). Las restricciones de posicionamiento relativo vienen determinadas por las propiedades. Sólo para el deslizador es necesario interceptar los eventos de movimiento del objeto y ya corregir la posición dela "ventana de tamaño completo". Todo esto se hace mediante ventanas virtuales, necesitamos atornillar la parte visual a ella, sin la parte visual habrá ventanas para las líneas y la ventana de tamaño completo. Y para una celda editable, hacer un campo de entrada (esto es una costumbre), todas las otras cosas serán manejadas por el motor - que obtendrá los eventos adecuados para cada celda (eventos del ratón, redibujando, moviendo)..... Estas son posibilidades, pero también hay un par de ideas para aumentar el rendimiento en caso de que haya demasiadas ventanas (listas grandes, tablas, unos cuantos miles de ventanas).

Hazlo tú..... y hablaremos. :)))

Si te das cuenta, este hilo evolucionó a partir de mi hilo de crowdsourced gui donde demostré un lenguaje de marcas y un editor visi. Algunos miembros del foro pensaron que podían replicar todo mejor y más bonito en su biblioteca. El tema se calmó después de 4 páginas. Y todavía está ahí. Y aquí estás, como ellos, hablando de "mil ventanas"... en fin, hazlo por fin.)))))

Buena suerte. ))))
 
Voy a describir un poco las tablas:

1. Una celda es el elemento más sencillo de una tabla y consta de tres objetos: una etiqueta, un texto y un icono.

2. Hay varios tipos de celdas: las cabeceras de columna, las cabeceras de fila y las que están dentro. Es importante separarlas, porque las celdas de cabecera llevan información sobre las filas/columnas (esencialmente sus propiedades). Esto facilita el trabajo con la mesa.

3. Cada celda ordinaria tiene un parámetro cuyo valor emite, pero hay celdas de texto, sin parámetro. Este es un tipo diferente.

3. Las propiedades de las celdas deben ser configurables de forma selectiva: como para toda la fila, para una columna o para toda la tabla.

4. Las propiedades de las celdas de cabecera deben configurarse por separado.

5. La tabla debe "poder" adaptar otros elementos, como: casillas de verificación, listas emergentes, ... incluso deslizadores, barras de progreso y botones de radio.

6. La tabla debe ser optimizada para redibujar sólo las celdas con valores cambiados, y no todas.

7. La tabla debe desplazarse si se coloca en un campo de visión limitado.

8. La mesa puede tener rodillos parciales.

9. Las columnas de la tabla pueden cambiar su anchura.

10. La tabla puede ser dinámica, cuando el número de filas no está predeterminado.

11. la tabla debe ser ordenable.

12. la tabla debe poder ser coloreada en su totalidad, o por filas/columnas seleccionadas.

Dios no permita hacer una tabla sobre simples rectángulos y textos, ya que tales "celdas" no son elementos y este es un camino sin salida.

Tengo estas cosas implementadas. Aunque no es perfecto en todo.... Pero funcionan y están bien.

Una mesa es sin duda uno de los elementos más complejos. El más complejo, que implica muchos mecanismos y diferentes soluciones.
 
Esa es la mesa))) Recuerdo que Anatoly fue el primero en hacerlo sobre lienzo. Lo pasó mal... Implementó muchas cosas muy bien, uno podría haber estado celoso.
 
Реter Konow:
Esa es la mesa))) Recuerdo que lo hizo por primera vez en lienzo Anatoly. Lo pasó mal... Implementó muchas cosas muy bien, uno podría haber estado celoso.

No lo hacemos bonito, lo hacemos funcional. Poco a poco voy haciendo los objetos adecuados, y el enfoque es diferente al de otras soluciones. En las celdas de la tabla se puede colocar cualquier objeto. He añadido al motor soporte para kanvas, por lo que resulta que se utilizan tanto kanvas como rectángulos regulares. Se adjunta una demostración.

Se puede arrastrar y soltar sobre la esquina superior izquierda en blanco.


Archivos adjuntos:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn:

No lo hacemos bonito, lo hacemos funcional. Poco a poco voy haciendo los objetos adecuados, y el enfoque es diferente al de otras soluciones. En las celdas de la tabla se puede colocar cualquier objeto. He añadido al motor soporte para kanvas, por lo que resulta que se utilizan tanto kanvas como rectángulos regulares. Se adjunta una demostración.

Se puede arrastrar y soltar sobre la esquina superior izquierda en blanco.


No está mal, no está mal...

Primero la crítica:

Conceptualmente, ¿se trata de una gran ventana o de varias pequeñas moldeadas juntas? Lamentablemente, no hay posibilidad de mover la(s) ventana(s). La mecánica funciona un poco rara, hay que pensar más. No he encontrado ninguna forma de poner nada en las celdas, no son interactivas. Hasta ahora, no hay controles que funcionen, ni siquiera un simple botón o casilla de verificación. Estructuralmente, las ventanas no están elaboradas - no hay marco, ni botón de minimizar o alejar, ni icono de media... Incluso sin cumplir sus funciones, y por lo decorativo, merece la pena ponerlos, porque si no, no queda claro lo que estamos viendo. Por supuesto... muy crudo.

Alabanza:

A pesar de las deficiencias, veo mucho progreso y potencial. Por supuesto, si tienes la suficiente paciencia y fuerza, puede que al final algo funcione. Sin duda, el talento está ahí).


P.S. satisfecho con el desplazamiento (aunque cojo) y aunque limitado, pero "gomoso" alféizar de la ventana. :)))

P.S.S. ¡Lo siento, las subventanas se pueden mover! No lo entendí al principio. Por supuesto, el espacio para moverse es muy limitado, pero aún así...
 
Otra ventaja: la etiqueta "A" (quién sabe por qué) es interactiva. Esto ya es algo bueno.
 

Lamentablemente, mis ventanas no se colocan como deberían después de la carga:


Intentar ponerlos en el centro no tiene éxito.
 
Реter Konow:

No está mal, no está mal...

Primero la crítica:

Conceptualmente, ¿se trata de una gran ventana o de varias pequeñas moldeadas juntas? Lamentablemente, no hay movilidad de la(s) ventana(s). La mecánica funciona un poco rara, hay que pensar más. No he encontrado ninguna manera de poner nada en las celdas, no son interactivas. Hasta ahora, no hay controles que funcionen, ni siquiera un simple botón o casilla de verificación. Estructuralmente, las ventanas no están elaboradas - no hay marco, ni botón de minimizar o alejar, ni icono de media... Incluso sin cumplir sus funciones, y por lo decorativo, merece la pena ponerlos, porque si no, no queda claro lo que estamos viendo. Por supuesto... muy crudo.

Alabanza:

A pesar de las deficiencias, veo mucho progreso y potencial. Por supuesto, si tienes la suficiente paciencia y fuerza, puede que al final algo funcione. Sin duda, el talento está ahí).


P.S. satisfecho con el desplazamiento (aunque cojo) y aunque limitado, pero "gomoso" alféizar de la ventana. :)))

P.S.S. ¡Lo siento, las subventanas se pueden mover! No lo entendí al principio. Por supuesto, el espacio para moverse es muy limitado, pero aún así...

Aquí todas las ventanas (general, celdas, desplazamiento, deslizador para el desplazamiento....) tienen el mismo principio de trabajo, sólo diferentes propiedades, difieren sólo en la representación visual, también hay ventanas invisibles, por lo tanto, la visualización de vidrio puede ser colocado en cualquier ventana, incluso en el deslizador o cuadrado rojo pequeño, no hay diferencia.

Los vasos en las celdas son interactivos como en el indicador (movimiento del propio vaso sobre el gráfico de ticks y la cabecera, movimiento vertical del precio), sólo los eventos de desplazamiento de la rueda son manejados por el desplazamiento derecho de la tabla.

Esta tabla servirá como elemento visual básico para crear diferentes listas y tablas, no importa lo que se coloque dentro de la celda, puedes tener diferentes objetos o incluso la misma tabla

 
Реter Konow:
Otra ventaja: la etiqueta "A" (quién sabe por qué) es interactiva. Esto ya es algo bueno.

¿Has probado el indicador de la secadora? Se trata de un interruptor de encendido/apagado para el desplazamiento automático de los precios

 
Aliaksandr Hryshyn:

¿Has probado el indicador de la secadora? ¿Es un interruptor de encendido/apagado para el desplazamiento automático de los precios?

Sí, el vaso en sí y el indicador de la garrapata están bien hechos. Son los que menos quejas tienen. ¿La escribió usted mismo o la tomó prestada de algún otro lugar?