begin process at 2012 05 28 16:24:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

afficher une grille


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

afficher une grille

jeudi 19 octobre 2006 à 17:59:11 | afficher une grille

igloobuster

salut à tous, j'ai un tableau a deux dimmensions et j'aimerais afficher se tableau dans une fenetre.

J'ai pensé à une Listview, mais le probleme est que dans les tutos que j'ai vu, on ne pouvais pas gerer case par case(voir groupe de case).

Voila mon probleme est la.

Je code en C sous visual studio.

Thx
jeudi 19 octobre 2006 à 20:20:32 | Re : afficher une grille

yann_lo_san

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.

salut.

vendredi 20 octobre 2006 à 13:56:10 | Re : afficher une grille

igloobuster

Salut et merci pour l'info alors mon probleme a évolué, j'ai trouvé cet article : http://www.cppfrance.com/code.aspx?ID=29171 que j'ai trouvé tres interressant, mais voila mon nouveau probleme Toutes les docs que j'ai trouvé (ou presque) concernant le controle activeX flexgrid sont données pour du visual basic. Si tu pouvais me donner un dernier coup de main :)
vendredi 20 octobre 2006 à 17:54:25 | Re : afficher une grille

yann_lo_san

Réponse acceptée !

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(""));

// Données exemples
CString header[4] = {_T("idHeader"),_T("ChampTexte"),
                               _T("ChampFloat"),_T("ChampDate")};
CString sResultat(_T("100|texte 1|125.25|28/06/2004 01:12:00|\r\n")
                          _T("200|texte 2|100.55|10/02/2001 10:02:00|\r\n")
                          _T("300|texte 3|110.10|NULL|\r\n"));

m_flexgrid.Clear();

// nombre de lignes fixe à la création, donc modifiées ici

m_flexgrid.put_Rows((long)nbrLigne+1);

// Ecrit les entêtes du flexgrid, largeur & alignement gauche
for(i=0; i<nbrChamp; i++)
{
 m_flexgrid.put_TextMatrix(0, i, header[i]);
 m_flexgrid.put_ColAlignment(i, CMsflexgrid1::flexAlignLeftCenter);
 m_flexgrid.put_ColWidth(i, 1400L);
   
}

// Extrait les données par ligne et champs

for(i=0; i<nbrLigne; i++)
{
 posSepar  = 0;
 ancienPos = 0;
 nFinLigne = sResultat.Find("\r\n", nDebutLigne);
 sLigne = sResultat.Mid(nDebutLigne, nFinLigne-nDebutLigne);
 nDebutLigne = nFinLigne + 2;
  
 for(int k=0; k<nbrChamp; k++)
 {
  // BackColor ligne paires plus foncées
  if( i%2 == 0 )
  {
   m_flexgrid.put_Row((long)i+1);
   m_flexgrid.put_Col((long)k);
   m_flexgrid.put_CellBackColor((unsigned long)RGB(240,240,240));
  }

  // déformate val & insère dans colonnes
  if( (posSepar = sLigne.Find('|', ancienPos)) != -1 )
  {
   extract = sLigne.Mid(ancienPos, (posSepar-ancienPos));
   ancienPos = posSepar + 1;
   m_flexgrid.put_TextMatrix(i+1, k, (LPCTSTR)extract);
  }
  else
  {
   m_flexgrid.put_TextMatrix(i+1, k, _T("NULL"));
  }
 }
}

// 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.

vendredi 20 octobre 2006 à 17:59:03 | Re : afficher une grille

yann_lo_san

J'ai oublié d'initialiser les 2 premieres var
int nbrChamp = 4; //logique vue les fausses données
int nbrLigne = 3;   // idem

vendredi 20 octobre 2006 à 20:55:32 | Re : afficher une grille

racpp

Administrateur CodeS-SourceS
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.

vendredi 20 octobre 2006 à 21:19:50 | Re : afficher une grille

igloobuster

Merci à yann_lo_san, je testerais demain :)

J'ai un tableau de char* (je precise char* car je ne suis pas en c++ pour x raison)
le but est d'avoir une vue un peu comme une feuille excel, que l'on puisse selectionner case par case.
le probleme de la listview (enfin le mien) est que je n'arrive pas a dissocier une case d'une ligne à ses soeurs.

Voilà :P

vendredi 20 octobre 2006 à 22:04:38 | Re : afficher une grille

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
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.


vendredi 20 octobre 2006 à 23:04:37 | Re : afficher une grille

yann_lo_san

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.

samedi 21 octobre 2006 à 00:15:05 | Re : afficher une grille

racpp

Administrateur CodeS-SourceS
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.

1 2 3

Cette discussion est classée dans : grille, afficher, probleme, tableau, case


Répondre à ce message

Sujets en rapport avec ce message

Probleme avec un sudoku [ par thomasvd ] Bonjour!je dois réaliser un jeu sudoku et je rencontre quelques problemes dont un qui m'embette particulierement et j'aimerais bien que quelqu'un m'or C - Tableau à deux dimensions, de pointeurs [ par lamoua76 ] Bonjour à tous !Je dois créer un tableau à deux dimensions de pointeurs (d'une structure que j'ai créé).Ma structure se nomme ainsi : pile.Mon tableau Probleme avec un SERVICE windows qui devrait afficher une fenetre ! [ par supergrey ] Bonjour, voila j'ai fait un programe (progA) qui affiche une fenetre (créée avec CreateDialog) quand une certaine application est lancée. Il fonctionn Bloqué au début de mon algo [ par Darksnakes ] Bonjour tout le monde, je débute en C et voila mon problèmeJ'aimerais faire un programme qui pour un tableauT[0..N] (toutes les cases initialisés à 1) d'un tablo[i][j] vers un tablo[k] [ par korp69 ] Bonjour, comment puis je faire passer la valeur de chaque case d'un tableau en 2dimension (tablo[i][j]) vers un tableau en Probleme avec backtracking [ par sda2 ] Bonsoir à tous, Je vous expose vite mon probleme, je souhaite realiser un sudoku (9x9), cependant il ne resoud que les sudokus facile, moyen et lui re Probleme backtracking [ par sda2 ] Bonsoir à tous, Je vous expose vite mon probleme, je souhaite realiser un sudoku (9x9), cependant il ne resoud que les sudokus facile, moyen et lui r Manipulation d'un tableau ordonné a une dimension [ par Selune6666 ] Bonjour voila j'ai un petit problème a vous soumettre.Il s'agit d'un programme qui permet de RETROUVER INSERER ou SUPPRIMER un élément dans un tableau SDL [ par lushkah ] bjr, j'ai un pb avec la SDL  en C, je débutes et j'ai passer la nuit a essayer de faire une disparition en fondu, j'essayes de programmer un jeu de da Afficher une image sur une surface DirectDraw a partir d'un tableau de pixel. [ par noetom ] Salut Je voudrais savoir si il existe une fonction de DirectDraw permettant de stocker un tableau de pixel dans une surface DirectDraw histoire de p


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales