SQLite dans le local-storage du navigateur.

Partagez votre expérience de SpiderBasic avec les autres utilisateurs.
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: SQLite dans le local-storage du navigateur.

Message par poshu »

Petite information à prendre en compte concernant SQLite pour les webapps: en plus d'être à la merci de perte de données, c'est un gros pavé de 2mo de js, ça prend "beaucoup" de temps à DL et encore "beaucoup" à parser. Je pense que cette lib est vraiment plus adaptée à cordova qu'aux webapps.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: SQLite dans le local-storage du navigateur.

Message par falsam »

poshu a écrit :Je pense que cette lib est vraiment plus adaptée à cordova qu'aux webapps.
Oui +++

■ Une application pour Android publier avec SpiderBasic embarque son propre navigateur pour pouvoir fonctionner. Si vous utiliser un utilitaire de nettoyage de cache comme CCLeaner pour Android, celui çi ne touchera pas l'application.

■ Une webapps tourne avec le navigateur de votre ordinateur. L'utilisation d'un utilitaire de nettoyage comme CCleaner videra aussi le cache de votre application et adieu la base de données.
poshu a écrit :SQLite pour les webapps ... est un gros pavé de 2mo de js, ça prend "beaucoup" de temps à DL et encore "beaucoup" à parser.
Oui c'est vrai.

La taille de stockage de fichiers en local Forage étant limité à 50 Mo sous Ios et 100 sous Android (Information à vérifier), je préconise l'utilisation de fichier JSON pour la sauvegarde de données pour plus de rapidité :wink:

@patrick88 : Ne confond pas LocalStorage et LocalForage
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: SQLite dans le local-storage du navigateur.

Message par Patrick88 »

falsam a écrit :je préconise l'utilisation de fichier JSON pour la sauvegarde de données pour plus de rapidité :wink:
j'en connais un qui nous faire la démo avec un petit code dans un petit post :mrgreen: hmm quoique JSON y'a déja dû y avoir des choses d'écrite ...
falsam a écrit :@patrick88 : Ne confond pas LocalStorage et LocalForage
je pensais que "LocalForage" c'était une faute de frappe et que c'était en réalité "LocalStorage" :oops: :oops: :oops: , je vais me documenter...

Patrick
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: SQLite dans le local-storage du navigateur.

Message par boby »

Patrick88 a écrit :j'en connais un qui nous faire la démo avec un petit code dans un petit post :mrgreen: hmm quoique JSON y'a déja dû y avoir des choses d'écrite ...
https://www.purebasic.fr/french/viewtop ... =4&t=15928
Aie, ça a quand même pris bien 2 secondes de recherche... Je vais me reposer un peut les doigts, j'ai des crampes.
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: SQLite dans le local-storage du navigateur.

Message par Patrick88 »

Aïe,

SpiderBasic ne connais pas la fonction SaveJSON(...) , pas dans la doc non plus (F1 etc...)
bizarre, parce qu'il y a la fonction LoadJSON(...)
la fonction ExportJSON() Export the given JSON data to the user through a download, donc pas dans le fromage local

comment faire pour "enregistrer" le fichier JSON avec la fonction writeData(..) ?

je pédale dans le café.

je vais continuer sur le code exemple de la base sqlite au moins y'a toutes les fonctions et ça avait l'air de marcher tant pis pour les 2 mo...

Pat
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: SQLite dans le local-storage du navigateur.

Message par falsam »

@Patrick : Commence par ce petite tutoriel qui va te permettre de comprendre qu'on peut stocker n'importe quel type de fichier en local Forage : A commencer par un petit fichier texte :wink:

:arrow: https://www.purebasic.fr/french/viewtop ... 24&t=17385
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: SQLite dans le local-storage du navigateur.

Message par Patrick88 »

mais oui quel nouille je suis, createfile(...) puis writestringn(...) pas besoin d'aller chercher midi à quatorze heure... j'avais pigé l'histoire du Fromage Local, et la lecture écriture des fichiers n'est pas très éloigné de ce que fait PureBasic...

merci Falsam.

Pat
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: SQLite dans le local-storage du navigateur.

Message par PCPixMusic »

Bonjour.

J'écris une application de test avec vos codes d'exemples.

Mais je n'arrive pas à updater les fiches.

Au départ je voulais en créer un certain nombres dés le début, mais ça ne fonctionne pas bien.

Car au lieu que les fiches vides se trouvent à la fin, elles se mettent au début et à la fin.

Pouvez m'aidez s'il vous plaît ?

Merci par avance.
À bientôt.

Code : Tout sélectionner

;Sources : https://www.purebasic.fr/french/viewtopic.php?p=200842#p200842
;App Name : Mon test
;HTML File Name : index.html
;JavaScript filename : montest.js
;SpiderBasic library path : core
;Coche la Case Copy SpiderBasic libraries

;CloseDebugOutput()

EnableExplicit 

Enumeration
  #Fenetre_Notes  
  #ID_Canvas
  #SBN
  
  #Bouton_Selection
  
  #Index_Un
  
  #Image_Presentation
  #Image_Nouveau
  #Image_Ouvrir  
  #Image_Import
  
  #Image_Ban
  #Icone_DB
  #Icone_Open_DB
  #Icone_DB_Update
  #Icone_Recherche
  #Icone_Blob
  #Icone_Parametres
  #Icone_A_Propos
  
  #ID_OK
  
  #Prenom_Texte
  #Nom_Texte
  #Entreprise_Texte
  #Adresse_Texte
  #Code_Postal_Texte
  #Ville_Texte
  #Pays_Texte
  #Telephone_Texte
  #Mail_Texte
  #Site_Texte
  
  #Prenom_Entree
  #Nom_Entree
  #Entreprise_Entree
  #Adresse_Entree
  #Code_Postal_Entree
  #Ville_Entree
  #Pays_Entree
  #Telephone_Entree
  #Mail_Entree
  #Site_Entree
  
  #Info_X
  #Info_Y   
  
  #Font_Notes
  
  #Pres
  #Suiv
EndEnumeration

Global FileName.s = "notes.db"
Global DataBase
;Global.i FenX =  DesktopHeight(#Fenetre_Notes) / 2 + 50
;Global.i FenY =  DesktopWidth(#Fenetre_Notes) + 400

Global.i FenX =  448
Global.i FenY =  720
Global.i Largeur_String = (FenX / 2) + 12
Global.i Taille_Caractere = 20
Global.i MouseX,MouseY

Global.s Prenom_Entree,Nom_Entree,Entreprise_Entree,Adresse_Entree,Code_Postal_Entree
Global.s Ville_Entree,Pays_Entree,Telephone_Entree,Mail_Entree,Site_Entree

Global.s Fichier_SBN,db_sbn
Global.i IndexFiches = 1,La_Fiche = 1
      
ExamineDesktops()

;Plan de l'application
Declare Start()
Declare InsertRecords()                               ;Insertion de quelques enregistrements
Declare SelectRecords(index.i)                               ;Selection des enregistrements
Declare SaveDatabase()                                ;Sauvegarde de la base de données en local storage
Declare onReadFile(Status, Filename$, File, SizeRead) ;CallBack si lecture d'un fichier en local storage
Declare onSaveFile(Status, Filename$, File, SizeRead) ; Callback si ecriture d'un fichier en local storage
Declare Affiche_Strings()

; Lecture de la 
Procedure Start()
  Debug "Lecture de la base de données en cours ...."
  ReadFile(0, FileName, @onReadFile(), #PB_LocalStorage)
EndProcedure

;Insertion de quelques enregistements 
Procedure InsertRecords()
  Protected.i Index
  
  DatabaseUpdate(DataBase, "Insert Into notes (prenom,nom,entreprise,adresse,code_postal,ville,pays,telephone,mail,site) Values ('Marie', 'Durand','Marie flûte', '25 Avenue Melody','11100', 'Narbonne', 'France','06.52.31.12.21','contact@mariedurand.fr','mariedurand.fr')")  
  DatabaseUpdate(DataBase, "Insert Into notes (prenom,nom,entreprise,adresse,code_postal,ville,pays,telephone,mail,site) Values ('Julie', 'Magic','Juju Couture', '10 Rue des arts', '26200', 'Montélimar','France','07.21.88.90.16','contact@jujucouture.fr','jujucouture.fr')")  
  DatabaseUpdate(DataBase, "Insert Into notes (prenom,nom,entreprise,adresse,code_postal,ville,pays,telephone,mail,site) Values ('Pierre','Rock', 'Pierrot Soft', '27 Rue du prog',  '34000', 'Montpellier','France','06.50.48.29.78','contact@pierrotsoft.fr','pierrotsoft.fr')")  
  
  For Index = 1 To 2
    DatabaseUpdate(DataBase, "Insert Into notes(prenom,nom,entreprise,adresse,code_postal,ville,pays,telephone,mail,site) Values ('','','','','','','','','','')")  
  Next
    
EndProcedure

Procedure UpdatetRecords(La_Fiche.i)
  Protected psSQLRequest.s
  psSQLRequest = "UPDATE notes SET "
  psSQLRequest + "contact_prenom='"+GetGadgetText(#Prenom_Entree)+"', "
  psSQLRequest + "contact_nom='"+GetGadgetText(#Nom_Entree)+"', "  
  psSQLRequest + "contact_entreprise='"+GetGadgetText(#entreprise_Entree)+"', "
  psSQLRequest + "contact_adresse='"+GetGadgetText(#adresse_Entree)+"', "
  psSQLRequest + "contact_code_postal='"+GetGadgetText(#code_postal_Entree)+"', "
  psSQLRequest + "contact_ville='"+GetGadgetText(#ville_Entree)+"', "
  psSQLRequest + "contact_pays='"+GetGadgetText(#pays_Entree)+"', "
  psSQLRequest + "contact_telephone='"+GetGadgetText(#telephone_Entree)+"', "     
  psSQLRequest + "contact_mail='"+GetGadgetText(#mail_Entree)+"', "
  psSQLRequest + "contact_site='"+GetGadgetText(#site_Entree)+"'"   
  psSQLRequest + " WHERE id_notes="+Str(La_Fiche)  
  DatabaseUpdate(DataBase,psSQLRequest)
  
  Debug psSQLRequest
EndProcedure

;Selection des enregistrements
Procedure SelectRecords(index.i)
  Protected ReqSql.s = "select prenom,nom,entreprise,adresse,code_postal,ville,pays,telephone,mail,site From notes order by nom"   
  
  
  If DatabaseQuery(DataBase, ReqSql)
    ;While NextDatabaseRow(DataBase)      
    
    For IndexFiches = 1 To index 
      NextDatabaseRow(DataBase)      
      ;Debug GetDatabaseString(DataBase, 0) + " , " + GetDatabaseString(DataBase, 1)    
      
      Prenom_Entree = GetDatabaseString(DataBase, 0)      
      Nom_Entree = GetDatabaseString(DataBase, 1)           
      Entreprise_Entree = GetDatabaseString(DataBase, 2)
      Adresse_Entree = GetDatabaseString(DataBase, 3)
      Code_Postal_Entree = GetDatabaseString(DataBase, 4)
      Ville_Entree = GetDatabaseString(DataBase, 5)
      Pays_Entree = GetDatabaseString(DataBase, 6)
      Telephone_Entree = GetDatabaseString(DataBase, 7)
      Mail_Entree = GetDatabaseString(DataBase, 8)
      Site_Entree = GetDatabaseString(DataBase, 9)
    Next    
    
    Affiche_Strings()
    
      ;IndexFiches = IndexFiches + 1
    ;Wend    
    
    FinishDatabaseQuery(DataBase)
  Else
    Debug "Une erreur c'est produite : " + DatabaseError()
  EndIf  
EndProcedure

Procedure SaveDatabase()
  Protected *Buffer = ExportDatabaseMemory(DataBase)
  
  If CreateFile(0, FileName, @onSaveFile(), #PB_LocalStorage)
    WriteData(0, *Buffer, 0, MemorySize(*Buffer))
    CloseFile(0)
  EndIf
EndProcedure


; CallBack si lecture d'un fichier en local storage
Procedure onReadFile(Status, Filename.s, File, SizeRead)
  Protected *Buffer, ReqSql.s
  
  Select Status
      
    Case #PB_Status_Loaded
      ; La base de données existe 
      ; - Memorisation de la base dans un buffer de travail
      ; - Visualisation des enregistrements
      Debug "Ouverture de la base de données " + Filename 
      
      ; Mémorisation de la base de données dans un buffer 
      *Buffer = ExportFileMemory(File)
      
      ; Ouverture de la base de données 
      DataBase = OpenDatabase(#PB_Any, *Buffer)
      If DataBase
        SelectRecords(La_Fiche)
      EndIf
      
    Case #PB_Status_Error
      ; La base de données n'existe pas
      ; - Création de la base de données 
      ; - Insertion de quelques enregistrements 
      ; - Visualisation des enregistrements
      ; - Sauvegarde des données en Local Storage
      Debug "Création de la base de données " + Filename 
      
      DataBase = OpenDatabase(#PB_Any)
      
      If DataBase
        ; Creation de la table SQlite
        ReqSql = "create table notes (id_notes INTEGER PRIMARY KEY AUTOINCREMENT Not NULL,prenom TEXT, nom TEXT,entreprise TEXT, adresse TEXT, code_postal TEXT, ville TEXT, pays TEXT, telephone TEXT, mail TEXT, site TEXT)"
        
        DatabaseUpdate(DataBase, ReqSql)        
        ; Insertion de quelques enregistrements 
        InsertRecords()                
        ; Visualisation des enregistrements
        SelectRecords(La_Fiche)        
        ; Sauvegarde de la base de données en "Local Storage"
        SaveDataBase()
        
        CloseDatabase(DataBase)
      Else
        
        Debug "Impossible d'ouvrir la base de données !!"
      EndIf
  EndSelect
EndProcedure

; Callback si ecriture d'un fichier en local storage
Procedure onSaveFile(Status, Filename.s, File, SizeRead)
  Select Status
    Case #PB_Status_Saved
      Debug "Fichier " + Filename.s + "(" + SizeRead + " bytes) sauvegardé" 
      
    Case #PB_Status_Error
      Debug "Impossible de sauvegarder le fichier " + Filename
  EndSelect
EndProcedure

Procedure PosClic(MouseX.i,MouseY.i, x0.i,y0.i,x1.i,y1.i)   
  If MouseX >= x0 And MouseX <= x0+x1 And MouseY >= y0 And MouseY <= y0+y1
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf  
EndProcedure

Procedure Charges_Images()  
  LoadImage(#Icone_DB,"/Icones/01-Precedente.png")
  LoadImage(#Icone_Open_DB,"/Icones/02-Suivante.png")
  LoadImage(#Icone_DB_Update,"/Icones/03-db_update.png")
  LoadImage(#Icone_Recherche,"/Icones/04-recherche.png")
  LoadImage(#Icone_Blob,"/Icones/05-blob.png")
  LoadImage(#Icone_Parametres,"/Icones/06-parametres.png")
  LoadImage(#Icone_A_Propos,"/Icones/07-a_propos.png")
EndProcedure

Procedure CadreCel(X1.i,Y1.i,FacX.i,FacY.i,Color.i)
  LineXY(X1,Y1,X1+FacX,Y1,Color) ;Ligne Horizontale Haut 1
  LineXY(X1,Y1,X1,Y1+FacY,Color) ;Ligne Verticale Gauche 1
 
  LineXY(X1,Y1+1,X1+FacX,Y1+1,Color) ;Ligne Horizontale Haut 2
  LineXY(X1+1,Y1,X1+1,Y1+FacY,Color) ;Ligne Verticale Gauche 2
 
 
  LineXY(X1+FacX-1,Y1,X1+FacX-1,Y1+FacY,Color) ;Ligne Verticale Droite 1
  LineXY(X1,Y1+FacY-1,X1+FacX,Y1+FacY-1,Color) ;Ligne Horizontale Bas 1
 
  LineXY(X1+FacX,Y1,X1+FacX,Y1+FacY,Color) ;Ligne Verticale Droite 2
  LineXY(X1,Y1+FacY,X1+FacX,Y1+FacY,Color) ;Ligne Horizontale Bas 1   
EndProcedure

Procedure BarreIcones()
  CadreCel(0,0,64,64,#White)
  CadreCel(64,0,64,64,#White)
  CadreCel(128,0,64,64,#White)
  CadreCel(192,0,64,64,#White)    
  CadreCel(256,0,64,64,#White)      
  CadreCel(320,0,64,64,#White)    
  CadreCel(384,0,64,64,#White)
EndProcedure

Procedure Affiche_Strings()                    
  StringGadget(#Prenom_Entree,     150,110,Largeur_String,40,Prenom_Entree)
  StringGadget(#Nom_Entree,        150,150,Largeur_String,40,Nom_Entree)
  StringGadget(#Entreprise_Entree, 150,190,Largeur_String,40,Entreprise_Entree)
  StringGadget(#Adresse_Entree,    150,230,Largeur_String,40,Adresse_Entree)
  StringGadget(#Code_Postal_Entree,150,270,Largeur_String,40,Code_Postal_Entree)
  StringGadget(#Ville_Entree,      150,310,Largeur_String,40,Ville_Entree)
  StringGadget(#Pays_Entree,       150,350,Largeur_String,40,Pays_Entree)
  StringGadget(#Telephone_Entree,  150,390,Largeur_String,40,Telephone_Entree)
  StringGadget(#Mail_Entree,       150,430,Largeur_String,40,Mail_Entree)
  StringGadget(#Site_Entree,       150,470,Largeur_String,40,Site_Entree)
EndProcedure 
      
Procedure GadgetEvent()
  Protected.i Index
  
  Select EventGadget()
    Case #ID_Canvas
      MouseX = GetGadgetAttribute(#ID_Canvas, #PB_Canvas_MouseX)
      MouseY = GetGadgetAttribute(#ID_Canvas, #PB_Canvas_MouseY)
            
    ;Case #ID_OK :  End
  EndSelect      
  
      If PosClic(MouseX,MouseY,0,0,64,64) 
        BarreIcones()
        CadreCel(0,0,64,64,#Blue)        
      EndIf
      
      If PosClic(MouseX,MouseY,64,0,64,64) 
        BarreIcones()
        CadreCel(64,0,64,64,#Blue)        
      EndIf
      
      If PosClic(MouseX,MouseY,128,0,64,64) 
        BarreIcones()
        CadreCel(128,0,64,64,#Blue)        
      EndIf
      
      If PosClic(MouseX,MouseY,192,0,64,64)
        BarreIcones()
        CadreCel(192,0,64,64,#Blue)        
      EndIf
      
      If PosClic(MouseX,MouseY,256,0,64,64) 
        BarreIcones()
        CadreCel(256,0,64,64,#Blue)        
      EndIf
      
      If PosClic(MouseX,MouseY,320,0,64,64) 
        BarreIcones()
        CadreCel(320,0,64,64,#Blue)        
      EndIf      
      
      If PosClic(MouseX,MouseY,384,0,64,64) 
        BarreIcones()
        CadreCel(384,0,64,64,#Blue)      
      EndIf
      
  Select EventType()     
    Case #PB_EventType_LeftButtonDown
       BarreIcones()
      
      If PosClic(MouseX,MouseY,0,0,64,64) ; Nouvelle base de données SQLite3
        If La_Fiche > 1
          La_Fiche = La_Fiche - 1
          SelectRecords(La_Fiche)
        EndIf
      EndIf
      
      If PosClic(MouseX,MouseY,64,0,64,64) ; Ouvrir une base de données SQlite3        
        If La_Fiche < 1001
          La_Fiche = La_Fiche + 1
          SelectRecords(La_Fiche)
        EndIf   
      EndIf
      
      If PosClic(MouseX,MouseY,128,0,64,64) ; Mettre à jour une base de donnée SQlite3                 
        UpdatetRecords(Index)                
        MessageRequester("Mise à jour de la base de données")
      EndIf
      
      If PosClic(MouseX,MouseY,192,0,64,64) ; Recherche dans la base de données SQlite 3       
        ;MessageRequester("Nouvelle base de données SQLite3")
      EndIf
      
      If PosClic(MouseX,MouseY,256,0,64,64) ; Import Image BLOB   
        ;MessageRequester("Nouvelle base de données SQLite3")
      EndIf
      
      If PosClic(MouseX,MouseY,320,0,64,64) ; Parametres
        CadreCel(320,0,64,64,#Blue)
        ;MessageRequester("Nouvelle base de données SQLite3")
      EndIf      
      
      If PosClic(MouseX,MouseY,384,0,64,64) ; A Propos        
        MessageRequester("Notysoft Notes SQlite3 - v1.00")
      EndIf
      
  EndSelect
  
  Select EventGadget()    
      
    Case #Index_Un
      La_Fiche = 1
      SelectRecords(La_Fiche)
      
  ;  Case #Pres      
  ;    If La_Fiche > 1
  ;      La_Fiche = La_Fiche - 1
  ;      SelectRecords(La_Fiche)
  ;    EndIf
    
  ;  Case #Suiv      
  ;    If La_Fiche < 1001
  ;      La_Fiche = La_Fiche + 1
  ;      SelectRecords(La_Fiche)
  ;    EndIf      
  EndSelect
  
EndProcedure

Procedure Fenetre_Notes()    
  If OpenWindow(#Fenetre_Notes, 0, 0, FenX,FenY, "Notysoft Note - 1.00",#PB_Window_BorderLess)       
    ;If OpenWindow(#Fenetre_Notes, 0, 0, FenX,FenY, "Notysoft Note - 1.00",#PB_Window_Background)       
      CanvasGadget(#ID_Canvas,0,0,FenX,FenY)      
      LoadFont(#Font_Notes, "Arial",Taille_Caractere)               
      SetGadgetFont(#PB_Default, FontID(#Font_Notes))      
      
      If StartDrawing(CanvasOutput(#ID_Canvas))
        DrawImage(ImageID(#Icone_DB),0,0,64,64)
        DrawImage(ImageID(#Icone_Open_DB),64,0,64,64)
        DrawImage(ImageID(#Icone_DB_Update),128,0,64,64)
        DrawImage(ImageID(#Icone_Recherche),192,0,64,64)
        DrawImage(ImageID(#Icone_Blob),256,0,64,64)
        DrawImage(ImageID(#Icone_Parametres),320,0,64,64)
        DrawImage(ImageID(#Icone_A_Propos),384,0,64,64)
        BarreIcones()
        StopDrawing()
      EndIf                                                    
      
    TextGadget(#Prenom_Texte,        20,110,130,40,"Prenom",#PB_Text_Border)
    TextGadget(#Nom_Texte,           20,150,130,40,"Nom",#PB_Text_Border)
    TextGadget(#Entreprise_Texte,    20,190,130,40,"Entreprise",#PB_Text_Border)
    TextGadget(#Adresse_Texte,       20,230,130,40,"Adresse",#PB_Text_Border)
    TextGadget(#Code_Postal_Texte,   20,270,130,40,"Code Postal",#PB_Text_Border)
    TextGadget(#Ville_Texte,         20,310,130,40,"Ville",#PB_Text_Border)
    TextGadget(#Pays_Texte,          20,350,130,40,"Pays",#PB_Text_Border)
    TextGadget(#Telephone_Texte,     20,390,130,40,"Telephone",#PB_Text_Border)
    TextGadget(#Mail_Texte,          20,430,130,40,"Mail",#PB_Text_Border)
    TextGadget(#Site_Texte,          20,470,130,40,"Site",#PB_Text_Border)   
    
    Affiche_Strings()
    
    TextGadget(#Info_X,20 ,550,130,40,Str(FenX),#PB_Text_Border)
    TextGadget(#Info_Y,150,550,Largeur_String,40,Str(DesktopHeight(#Fenetre_Notes)),#PB_Text_Border)
  
    ;ButtonGadget(#ID_OK, (FenX/2)-40, FenY-80, 80, 50, "Ok")      
    
    ;ButtonGadget(#Pres,(FenX/2)-120, FenY-80, 120, 50,"Précédente")      
    ;ButtonGadget(#Suiv,(FenX/2), FenY-80, 120, 50,   "Suivante")         
    
    ButtonGadget(#Index_Un,(FenX/2)-120, FenY-80, 200, 50,"Index 1")      
    
    BindEvent(#PB_Event_Gadget, @GadgetEvent())
    
    IndexFiches = 1
    
  CompilerIf #PB_Compiler_OS <> #PB_OS_Web
    Repeat 
      LoadFont(#Font_Notes, "Arial",Taille_Caractere)
      Event = WaitWindowEvent() 
    Until Event = #PB_Event_CloseWindow  ; If the user has pressed on the window close button
  CompilerEndIf
      
    EndIf
  EndProcedure      
  
  Start() 
  Charges_Images()   
  BindEvent(#PB_Event_Loading,@Fenetre_Notes())
Répondre