Page 1 sur 2

[..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 10:45
par Hugues
Bonjour,

J'aimerai optimer le chargement de ma ListView suite à une requête SQLite.

En effet, le temps de remplissage de maListView est long (environ 1000 lignes...).

Je sais d'où viens la lenteur de remplissage (je remplis ma ListView ligne par ligne)
► Afficher le texte
Merci

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 12:00
par scorp84
Bonjour,

Regarde peut être du côté de _GUICtrlListView_AddArray()

Amicalement.

BM

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 13:35
par Hugues
Bonjour,

Merci, j'y ai pensé aussi mais je galère...

Ce qui me ralenti aussi c'est l'alternance des couleurs des lignes de la Listview.

Il faudrait que j'utilise la fonction _SQLite_GetTable2d(), mais quand je fais un _GuiCtrlListView_AddArray(), ca me met le nom des champs, chose que je ne veux pas...

Donc je tourne en rond et ça commence à me gonfler... :twisted: :twisted:

EDIT:
Bon y'a un peu du mieux... j'arrive à supprimer la première ligne en retravaillant le tableau, ce qui nous donne:
► Afficher le texte
Maintenant, il faut que j'alterne les couleurs...

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 14:14
par scorp84
Essaye peut être ça :

Code : Tout sélectionner

GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
Cela vient de ce post :
http://www.autoitscript.com/forum/topic ... /?p=699993

Amicalement.

BM

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 14:14
par mikell
Du calme :mrgreen:

Code : Tout sélectionner

Local $array, $iRows, $iColumns
_SQLite_GetTable2d (-1, "SELECT * FROM table WHERE Stock = '0';", $array, $iRows, $iColumns)
; _ArrayDisplay($array)

For $i = 1 to UBound($array)-1
    GUICtrlCreateListViewItem($array[$i][0] & "|" & $array[$i][1] & ....etc, $listview)
Next
Et pour la couleur alternée il me semble avoir évoqué dans un autre post $GUI_BKCOLOR_LV_ALTERNATE, non ?

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 14:34
par Hugues
J'ai des problèmes avec

Code : Tout sélectionner

GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
lol

A la création de mon GUI, il y a bien alternance de couleur et quand je lance ma requête et rempli cette même ListView il n'y a plus d'alternance...

:cry: :cry:

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 14:45
par scorp84
Peux-tu nous envoyer ton nouveau code car sans cela va être difficile de t'aider.

Amicalement.

BM

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 14:53
par Hugues
Voici le code lorsque je charge ma base SQLite dans ma ListView au demarrage, la ListView est créé dans une autre fonction...
► Afficher le texte
Et voici le code quand je fais une recherche SQL:
► Afficher le texte
PS, je sais c'est le bordel!!! :mrgreen:

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 15:38
par scorp84
Je dirai à première vue que ton GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE) est mal placé.

Je le mettrai juste après le GUICtrlCreateListView.

Amicalement.

BM

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 15:44
par Hugues
J'ai fais, mais ca fait rien....

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 16:12
par scorp84
Envoie nous la partie de code où tu génères ton Listview.

Amicalement.

BM

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : mer. 16 avr. 2014 17:19
par Hugues
Voici la partie qui génère mon GUI:
► Afficher le texte
Après ce qui est bizarre, c'est que si je laisse le code qui est long pour afficher la ListView, si je minimise le GUI puis le Maximise, l'affichage est quasi instantané... :shock:

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : jeu. 17 avr. 2014 08:55
par Hugues
Bonjour,

C'est encore moi. :mrgreen: Du coup, j'ai retravaillé mes requêtes.

Cela donne ça:
► Afficher le texte
Je passe par la fonction _SQLite_GetTable2d() pour récuperer les valeurs désirées, ensuite je retravaille le tableau de celle-ci pour ne pas avoir le nom des colonnes, puis je fais un _GUICtrlListView_AddArray().

Tout est OK, mais pour l'alternance des couleurs, je suis bloqué... je ne sais pas s'il faut utiliser WM_NOTIFY, un refresh de la ListView...

J'ai essayé plein de chose mais que néni...

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : jeu. 17 avr. 2014 09:28
par Hugues
Bon j'ai presque reussi!!! :mrgreen: :mrgreen:

J'utilise ça, il faut que je le finalise...

Juste une question:

Au chargement, il ne modifie rien mais àprès requete oui... comment le faire à l'ouverture?
► Afficher le texte

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : jeu. 17 avr. 2014 10:51
par Hugues
Méthode sauvage mais qui fonctionne, je lance ma fonction après la déclaration de WM_NOTIFY...

Code : Tout sélectionner

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    _LoadSQLiteData()

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : jeu. 17 avr. 2014 11:29
par jguinch
Il n'y a rien de sauvage...
GUIRegisterMsg peut être lancé avant la création de la GUI. :P

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : jeu. 17 avr. 2014 11:47
par TommyDDR
Désolé, j'arrive peut être un peu tard...

Si vous avez beaucoup de lignes à modifier d'un coup dans une listeview mettez juste avant la modification :

Code : Tout sélectionner

_GUICtrlListView_BeginUpdate($hListView)
et juste apres :

Code : Tout sélectionner

_GUICtrlListView_EndUpdate($hListView)
Cela empêchera la fenêtre de se redessiner pendant le changement des données.

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : jeu. 17 avr. 2014 12:44
par Hugues
lol, tout le monde arrive un fois que la bataille est finie MDR

C'est pas grave, ça m'a forcé à chercher dans les divers forum et à modifier des bouts de code...

Merci quand même! :mrgreen:

Je passe pas encore le sujet en résolu pour le moment car i'll be back... :mrgreen:

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : jeu. 17 avr. 2014 13:40
par scorp84
lol, tout le monde arrive une fois que la bataille est finie MDR
Sympa pour les premiers lol

Amicalement.

BM

Re: [..] Optimiser remplissage ListView (Requête SQLite)

Posté : jeu. 17 avr. 2014 15:58
par Hugues
Bah je voulais pas dire ça dans ce sens :oops: :mrgreen: