SQLite dans le local-storage du navigateur.
Re: SQLite dans le local-storage du navigateur.
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.
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: SQLite dans le local-storage du navigateur.
Oui +++poshu a écrit :Je pense que cette lib est vraiment plus adaptée à cordova qu'aux webapps.
■ 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.
Oui c'est vrai.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.
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é
@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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: SQLite dans le local-storage du navigateur.
j'en connais un qui nous faire la démo avec un petit code dans un petit post hmm quoique JSON y'a déja dû y avoir des choses d'écrite ...falsam a écrit :je préconise l'utilisation de fichier JSON pour la sauvegarde de données pour plus de rapidité
je pensais que "LocalForage" c'était une faute de frappe et que c'était en réalité "LocalStorage" , je vais me documenter...falsam a écrit :@patrick88 : Ne confond pas LocalStorage et LocalForage
Patrick
Re: SQLite dans le local-storage du navigateur.
https://www.purebasic.fr/french/viewtop ... =4&t=15928Patrick88 a écrit :j'en connais un qui nous faire la démo avec un petit code dans un petit post hmm quoique JSON y'a déja dû y avoir des choses d'écrite ...
Aie, ça a quand même pris bien 2 secondes de recherche... Je vais me reposer un peut les doigts, j'ai des crampes.
Re: SQLite dans le local-storage du navigateur.
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
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
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: SQLite dans le local-storage du navigateur.
@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
https://www.purebasic.fr/french/viewtop ... 24&t=17385
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: SQLite dans le local-storage du navigateur.
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
merci Falsam.
Pat
-
- Messages : 106
- Inscription : ven. 06/janv./2017 9:50
Re: SQLite dans le local-storage du navigateur.
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.
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())