Page 1 sur 2
enregistrer listicongadget()
Publié : mar. 11/déc./2007 21:36
par venom
bonjour,
voila je bloque sur sa comment faire si c'est possible pour enregistrer un listicongadget() dans un fichier .ini
bon sa j'ai trouvé facile mais pour y enregistrer plusieurs colonnes ???
c'est sa que j'arrive pas
voici un exemple qui fonctionne mais avec la 1ere colonne uniquement
Code : Tout sélectionner
If OpenWindow(0, 100, 100, 300, 130, "ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 5, 5, 290, 90, "Nom", 100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(0, 1, "Adresse", 180)
AddGadgetItem(0, -1, "Nom"+Chr(10)+"Adresse")
ButtonGadget(1, 10, 105, 100, 20, "save")
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 1
NomFichier$ = SaveFileRequester("save", "", "Fichiers ini|*.ini", 0)
CreatePreferences(NomFichier$+".ini")
WritePreferenceString("0", GetGadgetItemText(0, -1, 0))
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
par je sais que pour enregistrer on utilise
GetGadgetItemText mais je n'est pas le choix de metres plusieurs colonnes donc voila mon bloquage
désolé
@++
Re: enregistrer listicongadget()
Publié : mar. 11/déc./2007 21:42
par Anonyme
F1 a écrit :Syntaxe
Resultat$ = GetGadgetItemText(#Gadget, Element [, Colonne])
non ?

Publié : mar. 11/déc./2007 21:55
par venom
salut Cpl.Bator
oui mais sa enregistre qu'une colonne a la fois et pas toute ma ligne ( mes deux colonnes )
a moin qu'il faut crée des groupes dans les fichiers .ini avec a chaque fois 2 sauvegarde pour une seul ligne ?
@++
Publié : mar. 11/déc./2007 22:14
par Backup
venom a écrit :salut Cpl.Bator
oui mais sa enregistre qu'une colonne a la fois et pas toute ma ligne ( mes deux colonnes )
a moins qu'il faut crée des groupes dans les fichiers .ini avec a chaque fois 2 sauvegarde pour une seul ligne ?
@++
qu'est-ce qui t'empeche de mettre la colonne1 dans un tableau (ou structure) ;
la colonne 2 dans un autre tableau (ou structure) ,
puis d'écrire le contenu de chaque élément des 2 tableaux a la suite l'un de l'autre ou bien :
(pseudo code)
for t=1 to nombre de ligne dans chaque colone
ligne a ecrire$=tableau1(t);" ";tableau2(t)
write ligne a ecrire$
next t

Publié : mar. 11/déc./2007 22:16
par Anonyme
Code : Tout sélectionner
For i = 0 To 1
WritePreferenceString("0", GetGadgetItemText(0, -1, i))
Debug GetGadgetItemText(0, -1, i)
Next
Et comme ca ?
@++
Publié : mar. 11/déc./2007 22:21
par Backup
pffff !

Publié : mer. 12/déc./2007 6:49
par venom
salut,
merci pour vos suggestion je vais regarder a sa et voir ce qui me convient le mieu pour ensuite lire ce qui a etait sauvegarder
je vous tien au courant.
@++
Publié : mer. 12/déc./2007 10:00
par Jacobus
Essayes avec ça
Exemple à adapter avec ses données perso.
Code PB4.10
Code : Tout sélectionner
Procedure CreateListiconIni()
ListiconFile$ = "~\Listicon.ini" ; Indiquer le chemin complet du fichier à créer ou mettre à jour
If CreateFile(0,ListiconFile$) ; Crée ou écrase le fichier pour ré-écrire dedans
For ListiconElement = 0 To CountGadgetItems(#Listicon)-1 ; pour chaque element de la liste - 1 (important sinon élément vide à gérer)
Colonne0$ = GetGadgetItemText(#Listicon,ListiconElement,0) ; on recupere le texte de la première colonne ou colonne 0
Colonne1$ = GetGadgetItemText(#Listicon,ListiconElement,1) ; on recupere le texte de la deuxième colonne ou colonne 1
Colonne2$ = GetGadgetItemText(#Listicon,ListiconElement,2) ; on recupere le texte de la troisième colonne ou colonne 2
;On écrit chaque texte récupéré à la suite... (une ligne pour chaque élément)
WriteStringN(0,Colonne0$)
WriteStringN(0,Colonne1$)
WriteStringN(0,Colonne2$)
Next ListiconElement ; poursuit l'opération pour chaque ligne de la Listicon
CloseFile(0)
EndIf
EndProcedure
Procedure OpenListiconIni(ListiconFile$)
ClearGadgetItemList(#Listicon) ; Vide la Listicon pour la remplir avec les nouvelles données
If OpenFile(0, ListiconFile$) ; Ouvre le fichier en mode écriture
While Eof(0) = 0 ; Jusqu'à la fin du fichier et qu'il n'y ait plus déléments
Colonne0$ = ReadString(0) ; on lit la première ligne et on récupère le texte
Colonne1$ = ReadString(0) ; on lit la deuxième ligne ...
Colonne2$ = ReadString(0) ; on lit la troisième ligne ...
AddGadgetItem(#Listicon,-1,Colonne0$+Chr(10)+Colonne1$+Chr(10)+Colonne2$,[ImageID]) ; on ajoute le tout à la listicon
Wend
CloseFile(0)
EndIf
EndProcedure
Exemple dans la boucle :
Code : Tout sélectionner
Case #BtnCreateListing : CreateListiconIni()
Case #BtnOpenListing
File$ = "~\Listicon.ini" ; Indiquer le chemin complet du fichier à lire
If FileSize(File$)<>-1 ; On s'assure que le fichier existe bien
OpenListiconIni(File$) ; s'il existe, on l'ouvre
Else
MessageRequester("Erreur!", "Listing inexistant!",#MB_ICONEXCLAMATION) ; sinon Argh!
EndIf
Publié : mer. 12/déc./2007 18:03
par Eric
Salut à tous,
je prends le train en marche mais j'utilise la lib PureVLSort de Gnozal pour sauver les listeIcon.
Alors pourquoi réinventer la roue.
en tous cas, je le remercie d'avoir ajouter ces fonctions dans cette LIB.
Cdt,
Eric
Publié : mer. 12/déc./2007 18:10
par Backup
Eric a écrit :
je prends le train en marche mais j'utilise la lib PureVLSort de Gnozal pour sauver les listeIcon.
Alors pourquoi réinventer la roue.
pour pas etre dépendant de Gnozal
aujourd'hui il fait tout gratuit , mais un jour il aura le monopole
et te fera payer tres cher la moindre extension de ses lib
et parceque tu n'aura pas travaillé dans ton coin,en comprenant comment ça marche, tu n'aura plus le choix que de te ruiner pour utiliser ses lib
et lui va s'enrichir !!
Gnozal est un Futur Bill Gate en herbe , fais gaffe !!
je vous aurai prévenue !! , ne venez pas vous plaindre ...

Publié : mer. 12/déc./2007 18:17
par Eric
@DOBRO,
Je comprend ton point de vue.
Il faut mettre les main dans le ...
Je disais que ces fonctions était très robuste.
Cdt,
Eric
Publié : mer. 12/déc./2007 18:21
par Chris
Eric a écrit :Salut à tous,
je prends le train en marche mais j'utilise la lib PureVLSort de Gnozal pour sauver les listeIcon.
Alors pourquoi réinventer la roue.
en tous cas, je le remercie d'avoir ajouter ces fonctions dans cette LIB.
Cdt,
Eric
Tout comme Dobro!
Et en plus, parce que c'est pas en utilisant des libs que tu apprends à programmer.
Puis une lib, c'est fait pour une version de Pure.
Les libs de la version 3.x ne fonctionnent pas avec la version 4.x, et si l'auteur de la lib ne fait pas la mise à jour, ben tu peux dire bye-bye aux fonctions que tu aimais bien pour tes futurs programmes.
Ou alors, il faudra apprendre à les programmer toi-même.
Publié : mer. 12/déc./2007 18:30
par Eric
@Chris
Je suis d'accord que cela poser problème pour les versions futures des softs dévelloper.
Cela est déja arrivé par le passé de reprogrammer des fonctions lors du passage de PureBasic 3.xx à 4.02.
Oui, je l'ai vécu. Je m'en plains pas.
cdt,
Eric
Publié : mer. 12/déc./2007 19:27
par venom
je vous remercie grandement de vos reponses
désolé pour les autres mais j'adopte les procedures a Jacobus car elle me simplifie beaucoup la tache mais merci a tous vos suggestions pourrons surement servir a un autre voir a moi plus tard
merci.
@++
Publié : jeu. 13/déc./2007 9:09
par gnozal
Dobro a écrit :aujourd'hui il fait tout gratuit , mais un jour il aura le monopole et te fera payer tres cher la moindre extension de ses lib et parceque tu n'aura pas travaillé dans ton coin,en comprenant comment ça marche, tu n'aura plus le choix que de te ruiner pour utiliser ses lib
et lui va s'enrichir !!
Gnozal est un Futur Bill Gate en herbe , fais gaffe !!

Pas de danger, je ne suis pas un professionnel de l'informatique, juste un amateur ...
Chris a écrit :Les libs de la version 3.x ne fonctionnent pas avec la version 4.x, et si l'auteur de la lib ne fait pas la mise à jour, ben tu peux dire bye-bye aux fonctions que tu aimais bien pour tes futurs programmes.
Toutes mes libs ont été mises à jour.
Même si ce n'était pas le cas, il reste toujours la possibilité de faire une DLL avec la lib version 3.94 et d'utiliser cette DLL avec PB4.xx, çà devrait fonctionner avec la majorité des libraries ...
Chris a écrit :Et en plus, parce que c'est pas en utilisant des libs que tu apprends à programmer.
Entièrement d'accord, mais des fois c'est plus simple d'utiliser une solution prête à l'emploi. Cf la librairie PV_Gadgets de PureVision, dont personne ne semble critiquer l'utilisation. Sans parler de toutes les DLL qu'on peut utiliser (sans en avoir le code).