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 ? :P

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 ) :wink:

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 ) :wink:

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 !




:lol: :lol:

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 :P :wink:

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 :D

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 ...








:lol: :lol: :lol: :lol: :lol:

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! :lol:

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 :wink:

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 :wink:
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 !!
:lol: :lol: :lol:
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).