Couleur sélection dans flexgrid [Résolu]

Messages postés
47
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
20 octobre 2019
- - Dernière réponse : JeuDuTaquin
Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
- 7 août 2019 à 20:08
Bonjour,

Dans un flexgid (MS ou VB), lorsque je fais une sélection de plusieurs cellules, la première est toujours blanche alors que les autres sont bleues (couleur choisie dans Propriétés).

Exemple :


J'ai sélectionné dans la ligne (row) 1 les colonnes 1 à 4. Seules les cases 2 à 4 sont colorées.

Comment faire pour que les cases 1 à 4 de la ligne 1 soient de la même couleur ?

Merci d'avance
Notpa
Afficher la suite 

5 réponses

Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
1
0
Merci
Salut Notpa,
Je ne suis pas un pro de ce contrôl, car je me limite aux kit standard, pour éviter les problèmes de compatibilités et installations…

Mais, si tu as un retour sur la selection (après avoir sélectionné les cases), tu pourra faire un changement de couleur des cases sélectionnés… si toutefois, le contrôl ne rend pas prioritaire la couleur de sélection.

Tu peux aussi changer la couleur de fond global en gris clair pour différentier ta feuille et ta sélection.

Tu as peut-être aussi une option de sélection…
… et aussi d'utiliser un contrôl fait maison intégré au projet, ce qui évite de diffuser des OCXs qui peuvent planter des applications MS déjà installées.
Commenter la réponse de JeuDuTaquin
Messages postés
47
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
20 octobre 2019
0
Merci
Bonjour JeuDuTaquin,

Merci de répondre. J'ai déjà testé le changement de couleur. Dans l’éventement MouseDown je récupère la ligne et la colonne du début de la sélection (grille.col et grille.row). Dans l'évènement MouseUp je récupère la ligne et la colonne de la fin de la sélection (grille.colsel et grille.rowsel).
Je peux donc changer la couleur mais gros problème : ce n'est plus une zone de sélection : si je clique ailleurs, la zone colorée qui disparait dans un sélection normale reste colorée dans ce cas.

Si je change la couleur du fond, gris clair par exemple, même problème : la première case de la zone sélectionnée est en... gris clair. Ça ne change donc rien à mon petit souci.

Un contrôle maison ? Trop complexe : mon programme, un programme de mots croisés à deviner est pratiquement fini. Et comment remplacer une grille par un contrôle maison ?

Quand aux OCX et DLL, je les livre toujours avec mes programmes livrés. Je n'ai jamais eu de problème, les destinataires non plus.

Merci de tes propositions

Notpa
JeuDuTaquin
Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
1 -
Salut,
Oui, pas simple comme problème.
Dans ton cas, pour une grille de mots croisées, j'aurai utiliser des contrôles pictures tout bête.
La selection peut-être automatique, car il te suffit de deux cliques: un pour la ligne, et avec l'orientation du curseur ça te donne la selection horizontale et verticale en bougeant … puis second clique pour la validation.
En plus, avec une Picturebox, tu peux te faire une fonte personnalisée en 3D… style scrabble…
Dans ton cas, tu as un police pas très belle/lisible. Et ça ce fait rapidement…
Donc, une frame avec des contrôles Picturebox en PicCase(n), selection d'une lettre sur une picture, couleur border horizontale, possibilité de bouger pour que la selection verticale change au cas ou tu bouge le curseur vers le haut ou bas…
Puis, clique pour sélectionner l'une des deux possibilités.
Visuellement, tu y gagnes, tu simplifies ton code,
Pour le remplissage des picturebox, il te faut un alphabet en image…. que tu trouvera surement sur google… ou tu fais un carré blanc, avec un PRINT sur la picturebox …. au moins pour les tests.
Je vais essayer de te faire un exemple…
A suivre.
Notpa
Messages postés
47
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
20 octobre 2019
-
Re,

Pas évident de faire des sélections de PictureBox. J'ai fait un petit test avec 15 PictureBox. Si je clique sur un, j'ai l'index de début que je sauvegarde. Un clic ailleurs peut m'indiquer la case de fin. Mais si la sélection se fait en diagonale ? Ça ne va pas. De plus, cette collection de PictureBox est indexée de 0 à 15 dans mon test. Si le joueur veut placer une lettre, un B par exemple, il doit spécifier où mettre cette lettre. Avec une grille, il doit juste donner le mot, la direction (horizontale ou verticale) sélectionner la zone dans la grille puis valider avec un bouton. Comment faire ça une collection de pictures ? En plus, je compte le nombre de lettres valides, celles restantes par rapport à la grille de référence.

Une image de mon programme te montre mieux son design :


Une fois validé, seul le H sera indiqué comme mal placé, les autres lettres ne matchent pas.
Quand à la police de caractère, mon premier post était un exemple. La police est différente dans mon programme.

Tout fonctionne parfaitement (sauf bug caché !). Mon seul souci est d'avoir toutes les cases sélectionnées de la même couleur.

Tu vois mieux avec cet exemple ?
JeuDuTaquin
Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
1 -
Salut Notpa,

J'ai fait un affichage avec selection horizontale/verticale avec clique droite et clique gauche.
La case est sélectionnée, et l'appuie d'une touche remplie la case...


Tu doit changer les couleurs dans le contrôle, mais ça devrai ne pas poser de problème.
Donc, création d'un contrôle avec image et un sharp de masquage en xor paint.
On peut le faire en picturebox, mais ça complique tout, car il faut tout réafficher…

Tu regardes… et tu vois ce que tu peux garder.
JeuDuTaquin
Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
1 -
Zut, tu est en 10x10...
Vu que les cases sont indexées, il faudra faire gaffe en changeant les pas verticaux de 16, vers 11 !
Commenter la réponse de Notpa
Messages postés
47
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
20 octobre 2019
0
Merci
Bonjour JeuDuTaquin,

Merci pour le projet. J'ai installé ton code. Ton programme a de gros avantages :
- la taille de la grille peut être changée facilement
- la saisie du texte se fait directement dans la grille, mais case par case

Mais aussi des inconvénients :
- la sélection se fait sur une ligne ou une colonne complète, s'arrêtant aux cases noires, ce qui est parfait, mais pas sur une série limitée de cases
- tu as le même problème de couleur : la première case sélectionnée est de couleur différente mais ça, c'est secondaire.

Bon, il faut que j'étudie ton code. Comment spécifies-tu les cases noires ?

Je ne vais pas modifier mon programme avec ta proposition. Ça reviendrait à tout réécrire ! Par contre ton code me servira dans une autre appli à venir. Tu n'auras pas bossé pour rien !

Merci encore de ton aide. Ça m'ouvre d'autres horizons.

Bonne journée

Notpa
JeuDuTaquin
Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
1 -
Son utilisation est simple, et permet de gérer des textes en mode graphique et tu as la possibilité de faire un doublon du contenu de la table dans le "control.tag=" qui permet de récupérer le texte d'un module (sans qu'il soit affiché)… "%" est une case noire! Et effectivement, certaines selection boguent en case d'indexe (0), pour des problèmes de dépassement de limites d'indexe car le traitement ne se fait pas en colonne/ligne… mais directement sur le tableau.
Il faut faire une procédure pour le traitement (c,l) qui faciliterai tout, mais je me suis concentré sur le visuel, et non le traitement.
Il faut donc modifier le code pour mettre la taille de la grille en variable pour faciliter le traitement du test des case et le changement de taille globale.
Et c'est là que je m'aperçoit que l'on est pas loin du concept du jeu du taquin...
JeuDuTaquin
Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
1 -
- tu as le même problème de couleur : la première case sélectionnée est de couleur différente mais ça, c'est secondaire.

C'est voulu, dans le contrôle, tu as 4 types d'état 0: normal 1:couleur1 2:couleur2 3:case noire masquée. (il s'agit du Sharp rectangulaire de masquage dans le controle)
retire seulement le CaseMC(Index).MaskStat = 2 …
C'est une bonne base, mais serai plus simple à utiliser avec des tests lignes/colonnes car toutes les cases sont indexées de 0 à n, et les limites tableau sont pénibles à gérer !
Commenter la réponse de Notpa
Messages postés
47
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
20 octobre 2019
0
Merci
Re,

Petite question hors sujet : est-ce que tu vois mon message daté du 5/08 à 16h16 ? Je dis ça parce qu'il est sur fond jaune alors que les autres sont sur fond blanc.
JeuDuTaquin
Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
1 -
Oui, le message est visible. Il a simplement été posté en réponse secondaire, et non dans le fil principal. ;)
(la flèche des icones en haut à droite) …
Commenter la réponse de Notpa
Messages postés
47
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
20 octobre 2019
0
Merci
Bonjour JeuDuTaquin !

J'ai trouvé la solution à mon problème. Je ne me sers plus de la sélection, mais de la fonction KeyPress à fin d'envoyer le texte tapé au clavier directement dans la grille.

Ce qui donne :


Le projet de cet exemple est dispo dans Cjoint ; Grille.zip. https://www.cjoint.com/c/IHhgGsR54is

Je passe en résolu.

Merci à toi et bonne journée.

Notpa
JeuDuTaquin
Messages postés
126
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
18 octobre 2019
1 -
Salut,
De rien, amuse-toi bien !
Commenter la réponse de Notpa