Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1174 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [Api windows (win32) / C] Edition d'un subitem dans une listview

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Api windows (win32) / C] Edition d'un subitem dans une listview

n°1075099
Erendis
Posté le 07-05-2005 à 20:39:04  profilanswer
 

Bonjour j'ai un petit souci qui m'empèche bien d'avancer,  
 
Je recupere des resultats d'une requete Mysql dans une listview, et j'aimerais pouvoir en editer tous les champs (dans plusieurs colonnes).  
 
Mon problème c'est d'arriver à éditer un subitem, pour le moment j'arrive à editer un item (première colonne), mais je me demande si c'est possible en fait, parce que je trouve vraiment aucune solution nulle part sur le net.  
 
Merci d'avance.


Message édité par Erendis le 08-05-2005 à 15:06:59
mood
Publicité
Posté le 07-05-2005 à 20:39:04  profilanswer
 

n°1075107
chrisbk
-
Posté le 07-05-2005 à 20:54:18  profilanswer
 

rah purée, j'en avais chié aussi comme un beau diable et jme rapelle pu la solution. C'etait tout con, mais la ca m'echappe ....  
 
désolé [:petrus75]

n°1075113
push
/dev/random
Posté le 07-05-2005 à 21:08:15  profilanswer
 

[:rofl]

n°1075115
Erendis
Posté le 07-05-2005 à 21:09:29  profilanswer
 

Et t'aurais pas un morceau de code qui marche qui traine ?  
Je suis pret à me debrouiller avec n'importe quoi du moment que ça me permette de tenter de me debloquer.
 

n°1075116
chrisbk
-
Posté le 07-05-2005 à 21:09:42  profilanswer
 

jme demande si c'etait pas une bete histoire de machin séparé par des \0 :gratgrat:

n°1075117
chrisbk
-
Posté le 07-05-2005 à 21:10:18  profilanswer
 

Erendis a écrit :

Et t'aurais pas un morceau de code qui marche qui traine ?  


 
heuh jsais pu, jcrois pas, et en plusse chui pas chez ouam, doncques bon

n°1075120
Erendis
Posté le 07-05-2005 à 21:14:06  profilanswer
 

Bon donc deja de memoire on peut editer les subitem d'une listview, c'est deja une bonne nouvelle.

n°1075166
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-05-2005 à 22:40:04  profilanswer
 

c'est tout con hein, voici la procédure à suivre pour mettre un texte ("leTexte" ) à la ligne 5, colonne 3 du listview :o
 
d'abord il faut remplir une structure LVITEM :
- son membre iItem contiendra l'index de la ligne (5)
- son membre iSubItem contiendra l'index de la colonne (3)
- son membre pszText contiendra le texte ("leTexte" )
- son membre cchTextMax contiendra le nombre de caractères de la chaine pointée par pszText (strlen(pszText))
- son membre mask doit contenir des constantes sur l'état de la structure : ce sont des switchs qu'on active en fonction des membres indiqués
 
avec une petite subtilité à savoir :  
- si le membre iSubItem == 0, alors la structure LVITEM ne concerne pas le subitem, mais l'item. dans ce cas, son membre lParam devient valide. on le remplit donc, généralement avec la valeur de iItem.
la conséquence est que le membre mask de la structure LVITEM doit être flaggé avec la constante LVIF_PARAM.
- dans le cas contraire, la structure concerne un subitem. dans ce cas, on se fout du membre lParam.
 
le membre mask aura donc la valeur suivante : LVIF_TEXT (indiquant qu'on utilise le champ pszText de la structure)
 
une fois la structure remplie, on la file en paramètre à la macro ListView_InsertItem et basta !
 
exemple de code (saisi à l'arrache dans le forum, on suppose que ton controle ListView a comme identifiant IDC_LISTVIEW, et que le hWnd de la fenêtre qui contient le ListView est hWndParentDlg) :

Code :
  1. LVITEM item;
  2. char *texte = "leTexte";
  3. item.iItem = 5;
  4. item.iSubItem = 3;
  5. item.pszText = texte;
  6. item.cchTextMax = strlen(texte);
  7. item.mask = LVIF_TEXT;
  8. ListView_InsertItem (GetDlgItem(hWndParentDlg, IDC_LISTVIEW), &item);


 
références :
ListView_InsertItem : http://msdn.microsoft.com/library/ [...] rtitem.asp
 
le message LVM_INSERTITEM (qui est encapsulé par la macro ListView_InsertItem) :
http://msdn.microsoft.com/library/ [...] rtitem.asp
 
la structure LVITEM :
http://msdn.microsoft.com/library/ [...] lvitem.asp
 
 
Win32, je maitrise [:kbchris]


Message édité par Harkonnen le 07-05-2005 à 22:43:59

---------------
J'ai un string dans l'array (Paris Hilton)
n°1075217
Erendis
Posté le 07-05-2005 à 23:55:26  profilanswer
 

Merci pour cette réponse super complète mais mon problème c'est pas ça, j'arrive à faire l'insertion, ce que j'arrive pas c'est à editer. J'ai fais un petit screenshot comme ça, ça sera plus clair.
 
- lien retiré -
 
Donc là je clique grace à une procedure sur la case que je veux editer, le problème c'est que ça marche qu'avec un item et pas un subitem.  
Donc en fait le problème c'est que si on peut effectivement editer les subitem, je sais pas où ça merde, dans la declaration de la listview ? Dans les propriétés de l'item ? Dans la procedure d'edition ? J'ai un peu du mal je fais de l'api win32 depuis 1 semaine :p


Message édité par Erendis le 17-05-2005 à 11:45:20
n°1075218
push
/dev/random
Posté le 07-05-2005 à 23:57:57  profilanswer
 

Erendis a écrit :

Merci pour cette réponse super complète mais mon problème c'est pas ça


 [:fenston]

mood
Publicité
Posté le 07-05-2005 à 23:57:57  profilanswer
 

n°1075555
Erendis
Posté le 08-05-2005 à 14:57:08  profilanswer
 

Bon je pense avoir identifié là où ça va pas.
C'est la fonction hEdit=ListView_GetEditControl(hList);
Dans hList j'ai le handle vers la listview, et hEdit recupere l'item qui est édité.
Comme ça édite directement l'item et pas le subitem, si on utilise cette fonction on peut pas éditer de subitem (à priori).
 
Donc il faudrait reecrire une fonction qui place un controle d'edition à la place du subitem selectionné, j'ai vu ça en C++ en utilisant c++ mais je demande si on peut faire ça avec l'api windows de base ?
 

n°1077641
Erendis
Posté le 10-05-2005 à 12:33:02  profilanswer
 

Non en fait c'est pas ça, je suis toujours bloqué.
En fait pas défaut dans une listview, on ne peut editer que le texte de la premiere colonne (Item), et la selection et l'edition du champ dans la listview se fait automatiquement.
Je me demande si c'est possible d'ecrire une fonction qui remplace l'edition de base, et qui permet d'editer des subitems, par exemple en creant un control d'edition dans la listview.
 
Comme je débute je me demande si c'est seulement possible et pas trop difficile à coder.
 
Sinon il faudrait que je trouve autre une solution, mais ouvrir une fenetre de dialogue avec tous les champs de chaque ligne, si y'en a plus d'une dizaine, ça va vite devenir ingérable.
 
En tout cas j'ai jamais été autant bloqué -_-  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [Api windows (win32) / C] Edition d'un subitem dans une listview

 

Sujets relatifs
C++ / Qt : prog marche sous linux et quand il veut sous windows!Win32 - parcourir la pile utilisateur d'un thread
[C++] compile sous windows mais pas sous linuxcomment récupérer la couleur d´un pixel sous windows XP
Modifier l'heure automatiquement sous windowsFin de l'édition 2005 du Concours National d'Informatique
crée un net view (windows)Application windows et gestion bdd
équivalent de ioctl() sous windowsWindows - Détecter les navigateurs
Plus de sujets relatifs à : [Api windows (win32) / C] Edition d'un subitem dans une listview


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR