yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 20 oct. 2006 à 17:54
Bien sur, si ça peut t'aider.
Tu dois ajouter à ta boite à outils VStudio le controle activeX
MS-hierarchicalFlexGrid Version 6. (Component gallery pour c++6 ou objets COM pour .net), ensuite tu le fait glisser sur un dialog et tu ajoute une var membre comme pour un bouton ou autre. VStudio va générer une classe wrapper (.h et .cpp), puis tu utiliseras les méthodes et constantes du wrapper.
EX :
//Dans ta class dialog.h
#include "msflexgrid1.h"
CMsflexgrid1 m_flexgrid;
// Dans onDraw() par exemple
int nbrChamp;
int nbrLigne;
// Cela sert pour des données exemples
// peut provenir d'un tab ou base de données ect....
int i;
int posSepar = 0;
int ancienPos = 0;int nDebutLigne 0, nFinLigne 0;
CString sLigne(_T(""));
CString extract(_T(""));
// Les fausses données sont séparés par des '|' car c'est un morceau de code que j'utilise moi meme, mais tu peux faire plus simple en ne mettant que des données numériques.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 20 oct. 2006 à 22:04
Quand la ListView est cliquée, la procédure de la fenêtre mère reçoit le message WM_NOTIFY. lParam contient un pointeur sur une structure NMITEMACTIVATE. Cette structure contient le type de clic, l'Item et le sous-Item cliqué. Pour que seules les cellules désirées soient sélectionnées en changeant leurs couleurs, la ListView doit avoir le style LVS_OWNERDRAWFIXED. Le dessin de la ListView se fait pendant le traitement du message WM_DRAWITEM. Certaines fonctions permettent de récupérer le RECT de chaque cellule.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 19 oct. 2006 à 20:20
le microsoft hierarchical flexgrid est magnifique pour ça, couleur des case et lignes, evenements cellules, affichage très rapide pour des milliers de lignes, ect...
c'est un controle activeX.
sinon y'a GDI, le dessin d'une grille et de texte peut faire l'affaire assez facilement.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 20 oct. 2006 à 20:55
Salut,
Normalement une ListView devrait suffire. Qu'est-ce que tu veux faire exactement?
Le FlexGrid est un Activex pour VB. Ton programme ne tournera sur les autres PCs qu'après avoir installé cet Activex.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 20 oct. 2006 à 23:04
racpp, un activeX n'est pas fait pour un langage en particulier, si on a la license VisualStudio, on à le droit de mettre l'OCX dans l'installeur, si c'était fait que pour VB, on aurait plus de controle diagramme graphique, carte cliquable, compteur de perfrormances, tous les controle WEB ASP activeX ect... et VC++ ne serait plus qu'un faiseur de programme console.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 21 oct. 2006 à 00:15
yann_lo_san >> Je parle uniquement des controles Activex qui sont installés dans le système par Visual Basic. Ils sont donc fait uniquement pour les applications faites en VB. C'est leur seule raison d'être. Le FlexGrid en est un exemple. Avec le C il est préférable de l'éviter pour ne pas avoir de dépendance à cet Activex et avoir à le mettre dans l'installeur. La ListView permet de tout faire et en mieux. Ca fonctionne du premier coup sur tous les PCs.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 21 oct. 2006 à 15:29
Je comprend, mais selon Visual C++ 6 de Mickey Williams (campus presse), le controle Flex Grid est livré avec VC++ et pour VC++, dans le but de créer des tableurs simples.
Mais ceci n'est quant même pas très important !
On aime bien se contredire quant on est passionné...
Bonne continuation.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 21 oct. 2006 à 23:08
PS : J'ai essayé de construire un mini flexgrid avec un listView et c'est un bordel sans nom, l'enfer sur terre ! On voit vraiment que ce n'est pas fait pour ça. Même avec WinDev utiliser une table est le b-A-bA, etonnant qu'il faille coder des heures une listView pour un résultat proche d'une table mémoire !
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 22 oct. 2006 à 03:51
Salut,
Je ne connais pas Mickey Williams mais il parait qu'il traite des MFC dans son livre. Tout le monde sait que les MFC est une catastrophe. Tous ces Activex sont fournis avec Visual Studio 6 mais certains ne sont installés que si VB est installé. J'ai déjà vécu ce genre d'expérience.
Pour profiter des possibilités d'une ListView il faut savoir bien l'utiliser dans le code. C'est vrai que ce n'est pas très facile mais c'est ça ce qu'on appelle la programmation. On n'a besoin de programmer notre ListView qu'une seule fois dans la vie, ensuite il suffira d'adapter le code pour les nouveaux cas. Ainsi, on a la maitrise totale de la ListView et de notre programme en général car on comprend tout ce qu'on fait. Ce n'est pas le cas avec les MFC ou Windev qui font presque tout le travail de codage à notre place. C'est de la pseudo-programmation.
Chacun choisit la méthode qui lui convient le mieux.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 22 oct. 2006 à 18:37
Je ne suis pas d'accord avec toi, apparemment tu es un puriste de la prise de tête, car les MFC ont été faites pour programmer "objet" des structure C/Win32, et c'est un travail énorme et bien aboutit que ces classes. D'ailleur un principe premier du développement n'est il pas de ne pas recréer ce qui à déjà été fait, même si je suis d'accord sur le fait qu'il faille comprendre ce que l'on fait quant on programme. Mais je crois que bien utilisées, les MFC sont adéquates.
Ceci dit, avec le .net et C#, cette discussion n'a plus lieu d'être...
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 23 oct. 2006 à 05:09
Le .NET avec C# est pire que les MFC. Ces dernières seront bientôt abandonnées par Microsoft. Tout le monde cherche la simplicité de programmation au détriment du résultat final. Personnellement, je préfère passer quatre mois pour bien affiner une application que de la faire en une semaine en utilisant ce qui existe déjà et qui ne correspond pas totalement à ce qu'on veut faire sans parler du peu de controle qu'on a dessus.
A chacun ses priorités.
igloobuster
Messages postés12Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention24 juillet 200910 24 oct. 2006 à 16:59
Le probleme quand tu code en C, c'est d'avoir des .cpp =P
ca fait un ptit bout de temps que je me prend la tete la, je crois que le faire à la main me parait etre plus judicieux, a moins que tu ne vois une solution...
igloobuster
Messages postés12Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention24 juillet 200910 25 oct. 2006 à 10:39
Oups j'ai peut etre un peu mal expliqué ma situation...
Je me suis dis, essayons les controles activeX...
En C++ aucun probleme, c'est meme d'une facilité enfantine !
Mais alors paye ta galere en C !!! Aucun tuto, aucune aide et surtout VS genere des .cpp quand on lui en demande (de l'aide). Pour un programe plain C c'est un peu embetant.
Alors est-ce la mort des activeX ou est-je encore une chance ?
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 25 oct. 2006 à 22:24
Ben, en C y'a pas 36 manière de faire, vu que les activeX sont des objets automation, il faut tater du COM à tous va, les CLSID, les QueryInterface, ect... Voir 'Inside COM' dans msdn, y'a un tuto pour de C pur, avec gestion des vtable.
Mais le plus simple reste de demander a VC++ de créer les classe wrapper, ou #import fichier.tbl (biblio de type).
igloobuster
Messages postés12Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention24 juillet 200910 31 oct. 2006 à 16:24
Bon pour conclure, apres avoir abandonné un peu ma gui pour m'intérresser au code important, j'ai été contraint d'y retourner.
Seulement voilà, mes essais activX avait été assez infructueux.
Je ne dis pas que c'est pas la bonne solution, mais en C c'est une véritable vrai galère.
Et j'ai tout compte fait trouvé un bon tuto dur les listview, et il apparait que ce n'est pas si compliqué que ca... il suffit juste de bien comprendre.
Donc pour conclure j'ai opté pour les listview. Voila :)
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 31 oct. 2006 à 19:38
Si t'arrives à faire un mini tableur avec une listView, pourras tu le mettre en source sur ce site ? Cela m'interresse beaucoup.
Merci et bonne continuation...