enregistrer listicongadget()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

enregistrer listicongadget()

Message 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é


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Anonyme

Re: enregistrer listicongadget()

Message par Anonyme »

F1 a écrit :Syntaxe

Resultat$ = GetGadgetItemText(#Gadget, Element [, Colonne])
non ? :P
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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 ?



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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

:)
Dernière modification par Backup le mar. 11/déc./2007 22:17, modifié 1 fois.
Anonyme

Message 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 ?

@++
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

pffff !




:lol: :lol:
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message 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 
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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:
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Message 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
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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.
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Message 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
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

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


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message 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).
Répondre