Créer une bibliothèque graphique à partir de zéro - page 10

 
Aliaksandr Hryshyn:

Dans mon cas, la "jungle" n'est pas plus compliquée que la moyenne : une fenêtre d'affichage (la zone visible du tableau), une fenêtre pleine grandeur dans laquelle toutes les cellules doivent tenir, elle se glissera à l'intérieur de la fenêtre principale, des fenêtres pour les lignes et dans celles-ci les cellules, plus le défilement (un curseur délimité par une barre). Les contraintes sur le positionnement relatif sont déterminées par les propriétés. Seulement pour le curseur, il est nécessaire d'intercepter les événements de mouvement de l'objet et de corriger déjà la position de la"fenêtre pleine grandeur". Tout ceci est fait par des fenêtres virtuelles, nous devons y attacher une partie visuelle, sans cette partie visuelle il y aura des fenêtres pour les lignes et des fenêtres de taille normale. Et pour une cellule éditable, faites un champ de saisie (c'est un champ personnalisé), toutes les autres choses seront gérées par le moteur - il recevra les événements appropriés pour chaque cellule (événements de souris, redessin, déplacement)...... Ce sont des possibilités, mais il y a aussi quelques idées pour augmenter les performances au cas où il y aurait trop de fenêtres (grandes listes, tableaux, quelques milliers de fenêtres).

Vous le faites..... et nous parlerons. :)))

Si vous remarquez, ce fil de discussion a évolué à partir de mon fil de discussion sur les interfaces graphiques où je faisais la démonstration du langage de balisage et de l'éditeur Visi. Certains utilisateurs du forum pensaient qu'ils pouvaient tout reproduire mieux et plus joliment dans leur bibliothèque. Le sujet s'est estompé après 4 pages. Et il est toujours là. Et vous voilà, comme eux, à parler de "mille fenêtres"... bref, faites-le enfin.)))))

Bonne chance. ))))
 
Je vais décrire un peu les tables :

1. Une cellule est l'élément le plus simple d'un tableau et se compose de trois objets : une étiquette, du texte et une icône.

2. Il existe plusieurs types de cellules : les en-têtes de colonne, les en-têtes de ligne et les cellules intérieures. Il est important de les séparer, car les cellules d'en-tête contiennent des informations sur les lignes/colonnes (essentiellement leurs propriétés). Il est ainsi plus facile de travailler avec le tableau.

3. Chaque cellule ordinaire a un paramètre dont elle sort la valeur, mais il n'y a que des cellules de texte, sans paramètre. C'est un type différent.

3. Les propriétés des cellules doivent pouvoir être configurées de manière sélective : pour la ligne entière, pour une colonne ou pour le tableau entier.

4. Les propriétés des cellules d'en-tête doivent être configurées séparément.

5. Le tableau doit être "capable" d'adapter d'autres éléments, tels que : des cases à cocher, des listes déroulantes, ... même les curseurs, les barres de progression et les boutons radio.

6. Le tableau doit être optimisé pour ne redessiner que les cellules dont les valeurs ont été modifiées, et non l'ensemble des cellules.

7. Le tableau doit défiler s'il est placé dans un champ de vision limité.

8. La table peut être équipée de rouleaux partiels.

9. Les colonnes du tableau peuvent modifier leur largeur.

10. Le tableau peut être dynamique, lorsque le nombre de lignes n'est pas prédéterminé.

11. Le tableau doit être triable.

12. le tableau doit pouvoir être coloré dans son intégralité, ou par lignes/colonnes sélectionnées.

Il ne faut surtout pas faire un tableau à partir de simples rectangles et de textes, car ces "cellules" ne sont pas des éléments et c'est une voie sans issue.

J'ai mis ces choses en place. Bien qu'il ne soit pas parfait en tout.... Mais ils fonctionnent et sont très bien.

Une table est certainement l'un des éléments les plus complexes. Les plus complexes, impliquant de nombreux mécanismes et différentes solutions.
 
C'est la table.))) Je me souviens qu'Anatoly a été le premier à le faire sur une toile. Il a eu du mal... Il a mis en œuvre beaucoup de choses très joliment, on aurait pu être jaloux.
 
Реter Konow:
C'est la table.))) Je me souviens qu'il a été fait pour la première fois sur une toile par Anatoly. Il a eu du mal... Il a mis en œuvre beaucoup de choses très joliment, on aurait pu être jaloux.

Nous ne le rendons pas beau, nous le rendons fonctionnel. Petit à petit, je fabrique les bons objets, et l'approche est différente des autres solutions. Tous les objets peuvent être placés dans les cellules du tableau. J'ai ajouté au moteur le support pour les kanvas, il s'avère donc que les kanvas et les rectangles réguliers sont tous deux utilisés. Une démo est jointe.

Le glisser-déposer peut être effectué dans le coin supérieur gauche.


Dossiers :
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn:

Nous ne le rendons pas beau, nous le rendons fonctionnel. Petit à petit, je fabrique les bons objets, et l'approche est différente des autres solutions. Tous les objets peuvent être placés dans les cellules du tableau. J'ai ajouté au moteur le support pour les kanvas, il s'avère donc que les kanvas et les rectangles réguliers sont tous deux utilisés. Une démo est jointe.

Le glisser-déposer peut être effectué dans le coin supérieur gauche.


Pas mal, pas mal...

La critique d'abord :

Conceptuellement, s'agit-il d'une grande fenêtre ou de plusieurs petites fenêtres moulées ensemble ? Malheureusement, la ou les fenêtres ne sont pas mobiles. La mécanique fonctionne un peu bizarrement, il y a plus à penser. Je n'ai trouvé aucun moyen de mettre quoi que ce soit dans les cellules, elles ne sont pas interactives. Jusqu'à présent, il n'y a aucun contrôle fonctionnel, pas même un simple bouton ou une case à cocher. Structurellement, les fenêtres ne sont pas élaborées - pas de cadre, pas de bouton de minimisation ou de zoom arrière, pas d'icône moyenne... Même s'ils ne remplissent pas leurs fonctions, et par souci de décoration, ils méritent d'être ajoutés, car sinon, on ne sait pas ce que l'on regarde. Bien sûr... très brut.

Louange :

Malgré les lacunes, je vois beaucoup de progrès et de potentiel. Bien sûr, si vous avez assez de patience et de force, quelque chose peut finir par s'arranger. Le talent est sans doute là).


P.S. satisfait du défilement (bien que boiteux) et du rebord de fenêtre, bien que limité, mais "caoutchouteux". :)))

P.S.S. Désolé, les sous-fenêtres peuvent être déplacées ! Je ne l'ai pas compris au début. Bien sûr, l'espace de déplacement est très limité, mais quand même...
 
Autre atout : l'étiquette "A" (allez savoir pourquoi) est interactive ! C'est déjà une bonne chose.
 

Malheureusement, mes fenêtres ne sont pas positionnées comme elles devraient l'être après le chargement :


Essayer de les mettre au centre n'est pas une réussite.
 
Реter Konow:

Pas mal, pas mal...

La critique d'abord :

Conceptuellement, s'agit-il d'une grande fenêtre ou de plusieurs petites fenêtres moulées ensemble ? Malheureusement, il n'y a pas de mobilité de la ou des fenêtres. La mécanique fonctionne un peu bizarrement, il y a plus à penser. Je n'ai trouvé aucun moyen de mettre quoi que ce soit dans les cellules, elles ne sont pas interactives. Jusqu'à présent, il n'y a aucun contrôle fonctionnel, pas même un simple bouton ou une case à cocher. Structurellement, les fenêtres ne sont pas élaborées - pas de cadre, pas de bouton de minimisation ou de zoom arrière, pas d'icône moyenne... Même s'ils ne remplissent pas leurs fonctions, et par souci de décoration, ils méritent d'être ajoutés, car sinon, on ne sait pas ce que l'on regarde. Bien sûr... très brut.

Louange :

Malgré les lacunes, je vois beaucoup de progrès et de potentiel. Bien sûr, si vous avez assez de patience et de force, quelque chose peut finir par s'arranger. Le talent est sans doute là).


P.S. satisfait du défilement (bien que boiteux) et du rebord de fenêtre, bien que limité, mais "caoutchouteux". :)))

P.S.S. Désolé, les sous-fenêtres peuvent être déplacées ! Je ne l'ai pas compris au début. Bien sûr, l'espace de déplacement est très limité, mais quand même...

Ici toutes les fenêtres (générale, cellules, défilement, curseur pour le défilement....) ont le même principe de travail, seulement des propriétés différentes, ne diffèrent que dans la représentation visuelle, il y a aussi des fenêtres invisibles, donc la visualisation du verre peut être placée dans n'importe quelle fenêtre, même dans le curseur ou le petit carré rouge, il n'y a pas de différence.

Les verres dans les cellules sont interactifs comme dans l'indicateur (mouvement du verre lui-même sur le graphique en tick et l'en-tête, mouvement vertical du prix), seuls les événements de défilement de la roue sont gérés par le défilement droit du tableau.

Ce tableau servira d'élément visuel de base pour créer différentes listes et tableaux. Peu importe ce qui est placé à l'intérieur de la cellule, vous pouvez avoir différents objets ou même le même tableau.

 
Реter Konow:
Autre atout : le label "A" (allez savoir pourquoi) est interactif ! C'est déjà une bonne chose.

Avez-vous testé l'indicateur de culbutage ? Il s'agit d'un interrupteur marche/arrêt pour le défilement automatique des prix.

 
Aliaksandr Hryshyn:

Avez-vous testé l'indicateur de culbutage ? S'agit-il d'un interrupteur marche/arrêt pour le défilement automatique des prix ?

Oui, le gobelet lui-même et l'indicateur de tic sont bien faits. Ils ont le moins de plaintes. L'avez-vous écrit vous-même ou l'avez-vous emprunté à quelqu'un d'autre ?