Trier une ListIcon par une base de données virtuelle SqLite

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Claude OI
Messages : 14
Inscription : mar. 25/nov./2008 12:40

Trier une ListIcon par une base de données virtuelle SqLite

Message par Claude OI »

Il est possible de trier n'importe quelle liste et en particulier ne ListIcon en passant par l'intermédiaire d'une base et d'une table SqLite en mémoire.

Code : Tout sélectionner

OpenWindow(0, 0, 0, 320, 170, "Trier la liste", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

ListIconGadget(0,10,10,300,130,"Noms",100,#PB_ListIcon_CheckBoxes)
AddGadgetColumn(0,1,"Prénom",100)
AddGadgetColumn(0,2,"N° de fiche",95)

AddGadgetItem(0,-1,"Gonzales"+Chr(10)+"Erwan"+Chr(10)+"412")
AddGadgetItem(0,-1,"Dugomier"+Chr(10)+"Sylvie"+Chr(10)+"38")
AddGadgetItem(0,-1,"Labarte"+Chr(10)+"Chantale"+Chr(10)+"84")
AddGadgetItem(0,-1,"Napoléon"+Chr(10)+"Premier"+Chr(10)+"1769")
AddGadgetItem(0,-1,"MoiMême"+Chr(10)+"Claude"+Chr(10)+"112")

ButtonGadget(1,10,145,90,20,"Tri par noms")
ButtonGadget(2,110,145,90,20,"Tri par prénoms")
ButtonGadget(3,210,145,90,20,"Tri par numéros")

Procedure.s TriListe(ordre.s)
Define enregistrement.s=""

UseSQLiteDatabase()

OpenDatabase(0, ":memory:", "", "")
DatabaseUpdate(0, "create table temp (col1 VARCHAR(100), col2 varchar(100),col3 integer)")       


For compteur=0 To CountGadgetItems(0)-1
enregistrement=""
enregistrement+"'"+GetGadgetItemText(0,compteur,0)+"',"
enregistrement+"'"+GetGadgetItemText(0,compteur,1)+"',"
enregistrement+"'"+GetGadgetItemText(0,compteur,2)+"'"
DatabaseUpdate(0,"insert into temp values("+enregistrement+")")
Next

ClearGadgetItems(0)

DatabaseQuery(0,"Select * from temp order by "+ordre)
While NextDatabaseRow(0)
AddGadgetItem(0,-1,GetDatabaseString(0,0)+Chr(10)+GetDatabaseString(0,1)+Chr(10)+GetDatabaseString(0,2))
Wend

EndProcedure


Repeat
action = WaitWindowEvent()
	If action = #PB_Event_Gadget
		Select EventGadget()
			Case 1:TriListe("col1")
			Case 2:TriListe("col2")
			Case 3:TriListe("col3")
		EndSelect
	EndIf	
Until action = #PB_Event_CloseWindow
Par contre, je sais qu'il est possible de passer par une callback pour cliquer sur les entêtes de colonnes mais c'est trop fort pour moi.
Si vous voulez compléter, merci d'avance.

Bon usage et salut à tous
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Quel est l'avantage d'utiliser SQLite plutôt que les fonctions de tri intégrées de PB (mode SORT) ?
C'est plus rapide ?
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Bonjour,

Tu as tout a fait raison... (Avis).
Mais, avec tout le respect que je te dois, explique moi :
Pourquoi sur le site Français, tu renvois un lien sur une explication du manuel en anglais alors que ça existe à l'identique en français ?
- Est-ce pour nous obliger à lire l'anglais ? :idea:
- A participer au site officiel ? :roll:
- Ou une simple déformation ? :lol:
Car à priori, un des avantages de PureBasic est aussi d'avoir des explication en français ? (ou je me trompe ?)
Merci
Note : Personnellement, je maitrise suffisamment l'anglais pour me débrouiller.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Parce que tous mes liens pointent vers les versions anglaises.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Tous tes liens ??? 8O
Et les français ????? y sentent le fromage :lol: :lol:
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Kwai chang caine a écrit :Tous tes liens ???
Presque tous oui, même Google ...
Il faut dire que j'ai une version de XP anglaise à la maison (non, pas du warez : un utilisateur (anglais) du forum anglais m'a offert un PC tout neuf pour Noël il y a 2 ans). Je n'utilise que le clavier français de mon vieux PC, c'est plus pratique pour les accents.
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message par Le psychopathe »

PureBasic - Sort

Généralités

Souvent, les données doivent être triées pour être utilisées. PureBasic propose des commandes très optimisées pour trier les tableaux et les listes chainées aussi bien en ordre ascendant que descendant.
Sommaire des commandes

SortArray
SortList
SortStructuredArray
SortStructuredList


Exemple

Sort (Numeric).pb
Sort (String).pb
OS Supportés

Tous

Guide de référence - Index
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Je demande pardon au PSYCHOPATHE :oops:
Mais j'ai une question qui me brule les levres a GNOZAL depuis noir de temps :roll:
Alors j'en profite qu'il parle de sa config, pour la poser

@GNOZAL
Comme tu parle toujours que tu as NT comme OS, ou plutot que tu as eu si tu viens d'avoir un nouveau PC
Je voulais savoir comment tu te debrouillais au niveau de l'USB, et le reseau ??? c'est le meme???
Et quelles sont les choses ou les galeres que tu as rencontré pour pouvoir l'utiliser dans la vie de tous les jours.
J'utilise aussi W2000 qui est sur base NT, et je voulais savoir si tu as des combines, des drivers etc ..qui te permette d'utiliser NT comme un W2000 ou un XP PRO ?? :D

Car n'en deplaise a un ami que je viens de me faire sur le forum.... :D je crois que tous les W2000, XP, VISTA, SEVEN ont une base NT, alors ....peut on utiliser cette base sans avoir tout ce qui ne sert a rien autour :roll:

Je te demande ça car je crois que l'on viens d'enterrer le dernier utilisateur de 89 ans hier :lol:
Donc a part toi...je n'ai pas de personne digne de confiance pour me conseiller
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Kwai chang caine a écrit :Comme tu parle toujours que tu as NT comme OS, ou plutot que tu as eu si tu viens d'avoir un nouveau PC
Je voulais savoir comment tu te debrouillais au niveau de l'USB, et le reseau ??? c'est le meme???
Et quelles sont les choses ou les galeres que tu as rencontré pour pouvoir l'utiliser dans la vie de tous les jours.
1. Au boulot : au choix, selon les postes : NT4, 2k, XP, MacOS (pre X), OS/2 Warp !
2. A la maison : XP (nouveau PC), 98SE (vieux PC).
Sinon je confirme : pour NT4, pas de support USB, ni de driver pour les nouveaux matériels. Si une carte réseau ou une barette de RAM meurt, on cannibalise d'autres vieux PC.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

gnozal a écrit : 2. A la maison : 98SE (vieux PC).
je me faisait la réflexion , mais depuis que XP,Vista sont devenu des standards
win 98 pourrai bien devenir l'os windows, le plus sur, parceque les fabricants de
virus et autre chevaux de troie, se sont reporté sur XP,Vista, et finalement 98
est peut etre plus tranquille :)

de plus sur 98 il y avait de bon outils qui maintenant ne marche plus sous XP
je pense a softice entre autre ;)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

@GNOZAL
Merci pour l'info....et pour le reseau c'est comme W2000 ?
win 98 pourrai bien devenir l'os windows, le plus sur, parceque les fabricants de
virus et autre chevaux de troie, se sont reporté sur XP,Vista, et finalement 98
est peut etre plus tranquille

Sur....mais reste quand meme que W98 au niveau USB..... :?
C'est pour ça que je pense qu'avec W2000 ou XP on avait atteint enfin un tres bon OS qui aurait suffit au 3/4 des utilisateurs PC :D (Hors joueurs encore une fois)
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Kwai chang caine a écrit :@GNOZAL
Merci pour l'info....et pour le reseau c'est comme W2000 ?
Quasiment, oui.
Claude OI
Messages : 14
Inscription : mar. 25/nov./2008 12:40

Hors sujet

Message par Claude OI »

Désolé de vous avoir dérangés.
Je vous laisse continuer votre conversation entre vous.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit : Sur....mais reste quand meme que W98 au niveau USB..... :?
pas du tout , il existe un patch pour donner l'usb2 a 98 !
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Message par Fig »

Dobro a écrit : je pense a softice entre autre ;)
Beuh! 8O
Ca marche Softice sur Xp, Dobro :wink: (on est complétement hors sujet là, j'en ai peur...)
Répondre