Dans le tutoriel sur la gestion des liste, j'ai vu que la fonction gtk_tree_selection_select_iter() permettait de sélectionner un élément par programme.
Avant l'utilisation de la fonction, j'ai vérifié que j'avais un itérateur valide (j'extrait des donnée de la liste avec cet itérateur.). La sélection est activée puisque lorsque l'utilisateur clique, j'arrive à retrouver la ligne sélectionner.
Mais je n'arrive pas à faire fonctionner cette fonction.
Voila la structure de déclaration :
Puis j'essaye de sélectionner par programme un élément après avoir rentré des données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 typedef struct { GtkWidget *form; GtkWidget *lblNom; GtkWidget *lblOdometre; GtkWidget *lblConso; GtkWidget *lblCout; GtkWidget *lstView; FILE *Nom; FILE *Essence; FILE *Reparation; FILE *Alarme; FILE *Temp; long Fpos; long Odometre; long DistParcourue; float ConsoTot; float CoutTot; char *NomBase; int Activation; GtkTreeStore *Donnee; GtkTreeIter IterE; GtkTreeIter IterR; GtkTreeIter IterA; GtkTreeIter IterF; GtkTreeIter IterS; GtkCellRenderer *Renderer; GtkTreeViewColumn *Date,*Vendeur,*Cout; GtkTreeSelection *Selection; } Principale;
J'ai déja vérifié que que je rentrai dans la boucle, mais la fonction gtk_tree_selection_select_iter ne fait pas son office.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 frmPrincipale->Selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(frmPrincipale->lstView)); gtk_tree_selection_set_mode(frmPrincipale->Selection, GTK_SELECTION_SINGLE); if(gtk_tree_model_iter_children(GTK_TREE_MODEL(frmPrincipale->Donnee),&frmPrincipale->IterF,&frmPrincipale->IterA)) { do { Nom= g_malloc(20); gtk_tree_model_get(GTK_TREE_MODEL(frmPrincipale->Donnee),&frmPrincipale->IterF,0,&Nom,-1); if(atol(Nom)<frmPrincipale->Odometre) { GdkEventButton *b; b=g_slice_new(GdkEventButton); b->type=GDK_2BUTTON_PRESS; gtk_tree_selection_unselect_all(frmPrincipale->Selection); gtk_tree_selection_select_iter(frmPrincipale->Selection, &frmPrincipale->IterF); on_frmPrincipale_lstView_button_press_event(frmPrincipale->lstView, b, frmPrincipale); } else break; g_free(Nom); } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(frmPrincipale->Donnee),&frmPrincipale->IterF)); }
Une idée ?
Merci d'avance
Partager