Rosa un petit soft pour les personnes qui se pèsent

Programmation d'applications complexes
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Rosa un petit soft pour les personnes qui se pèsent

Message par grendizer »

Bonjour
Voici Rosa un petit soft pour les personnes qui se pèsent on entre la date et le poids , c'est une première version , je sais qu'il y a pas mal d'erreur mais j"'ai réappris PB au passage .....
Image

Code : Tout sélectionner

;**** Rosa by jean-bernard  ****
EnableExplicit

;-- Fenetres 
Enumeration windows
  #Form_Main 
  #Form_Ajoute
  EndEnumeration
  ;-- Gadgets
Enumeration  gadgets     
  #List_Poids 
  #Button_Ajouter
  #Button_Sauver
  #Button_Effacer
  #Button_Valider
  #Button_Annuler
  #Cadre
  #Text_Date
  #Text_Poids
  #Champ_Date
  #Champ_Poids
  #Font_List
  #Font_Button
  #Font_Champ
  #File
  EndEnumeration
 ;-- Liste pour ajouter une date et un poids
 Structure Gestion
  Date.s
  Poids.s
EndStructure
Global NewList Poids.Gestion()
  
  
  
  
  
;-- Fonts
  LoadFont(#Font_List, "Arial",12, #PB_Font_Bold)
  LoadFont(#Font_Champ, "Arial",10, #PB_Font_Bold)
  LoadFont(#Font_Button, "Times New Roman",10, #PB_Font_Bold)
  
;-- Variables 
Global quitter
;-- Procedures 
;-- Fermer ou quitter le programme 
Procedure Close()
    quitter = EventWindow()
    CloseWindow(quitter)
    If quitter=#Form_Main
      End
    EndIf   
EndProcedure
;-- Procedure ajoute une date et un poids
Procedure.b Ajoute_Poids()
  LastElement(Poids())
  If AddElement(Poids())
    Poids()\Date=GetGadgetText(#Champ_Date)
    Poids()\Poids=GetGadgetText(#Champ_Poids)
    AddGadgetItem(#List_poids,-1,Poids()\Date+Chr(10)+Poids()\Poids+Chr(10))
  EndIf  
  CloseWindow(#Form_Ajoute)
ProcedureReturn
EndProcedure



;-- Fenetre pour ajouter une date et un poids
Procedure Ajoute()
  OpenWindow(#form_Ajoute,0,0,320,330,"Ajouter un poids",#PB_Window_TitleBar|#PB_Window_ScreenCentered)
  SetWindowColor(#Form_Ajoute, $E16941) ; 
  FrameGadget(#Cadre,10,10,300,250,"")
  TextGadget(#Text_Date,90,70,120,30,"Date --> J/M/A :",#PB_Text_Center)
  StringGadget(#Champ_Date,110,90,80,20,"")
  TextGadget(#Text_Poids,90,150,120,30,"Poids :",#PB_Text_Center)
   StringGadget(#Champ_Poids,125,170,50,20,"")
   SetGadgetFont(#Text_Date,FontID(#Font_List)) 
   SetGadgetFont(#Text_Poids,FontID(#Font_List)) 
   SetGadgetColor(#Text_Date, #PB_Gadget_FrontColor,$00FFF6)
   SetGadgetColor(#Text_Poids, #PB_Gadget_FrontColor,$00FFF6)
   SetGadgetColor(#Text_Date, #PB_Gadget_BackColor, $E16941) 
   SetGadgetColor(#Text_Poids, #PB_Gadget_BackColor, $E16941) 
   SetGadgetFont(#Champ_Date,FontID(#Font_Champ)) 
   SetGadgetFont(#Champ_Poids,FontID(#Font_Champ)) 
  ButtonGadget(#Button_Valider,20,280,100,30,"Valider")
   GadgetToolTip(#Button_Valider, "Ajoute la date et le poids  à la liste  ")
   ButtonGadget(#Button_Annuler,200,280,100,30,"Annuler")
    GadgetToolTip(#Button_Annuler, "Annule la saisie et retour à la liste  ")
  SetGadgetFont(#Button_Valider,FontID(#Font_Button)) 
  SetGadgetFont(#Button_Annuler,FontID(#Font_Button)) 
  BindGadgetEvent(#Button_Valider,@Ajoute_Poids())
  BindGadgetEvent( #Button_Annuler,@Close())
  BindEvent(#PB_Event_CloseWindow,@Close(),#Form_Ajoute)
  
  
  
EndProcedure
;--Procedure de sauvegarde du fichier
Procedure Sauver()
  ResetList(Poids())
  CreateFile(#File,"Rosa.dat")
  ForEach Poids()
    WriteStringN(#File,Poids()\Date)
    WriteStringN(#File,Poids()\Poids)
  Next
  CloseFile(#File)
  MessageRequester("Information","Fichier Sauvegarder!",#PB_MessageRequester_Info)
EndProcedure
;-- Procedure pour Charger la liste au demarrage du programme
Procedure ChargeList()
  If OpenFile(#File,"Rosa.dat")<>0 
    ResetList(Poids())
    OpenFile(#File,"Rosa.dat")
    While Eof(#File)=0
      If  AddElement(Poids())
        Poids()\Date=ReadString(#File)
        Poids()\Poids=ReadString(#File)
        AddGadgetItem(#List_poids,-1,Poids()\Date+Chr(10)+Poids()\Poids+Chr(10))
  EndIf   
Wend 
CloseFile(#File)
EndIf 
  
EndProcedure
;--Procedure d'effacement d'un poids de la liste
Procedure Effacer()
  Protected p,Total_Poids.l 
 Total_Poids = CountGadgetItems(#List_Poids)-1
 For p = Total_Poids To 0 Step -1 
   If GetGadgetItemState(#List_Poids,p)&#PB_ListIcon_Checked
     RemoveGadgetItem(#List_Poids,p)
     SelectElement(Poids(),p)
      DeleteElement(Poids())
   EndIf    
 

 Next p
  
EndProcedure


;-- Fenetre main 
Procedure open_Main()
      OpenWindow(#Form_Main,0,0,500,420,"ROSA",#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
      SetWindowColor(#Form_Main, $E16941) ; 
      ListIconGadget(#List_Poids,10,100,480,280,"DATE : ",280, #PB_ListIcon_GridLines|#PB_ListIcon_CheckBoxes)
    AddGadgetColumn(#List_Poids,1,"POIDS :",200)
    SetGadgetColor(#List_Poids, #PB_Gadget_FrontColor,$FFFFFF)
    SetGadgetColor(#List_Poids, #PB_Gadget_BackColor, $5C3AB2) 
    SetGadgetFont(#List_Poids,FontID(#Font_List)) 
    ButtonGadget(#Button_Ajouter,20,10,100,20,"AJOUTER")
    GadgetToolTip(#Button_Ajouter, "Ajoute une pesée à la liste ")
    ButtonGadget(#Button_Sauver,195,10,100,20,"SAUVEGARDER")
    GadgetToolTip(#Button_Sauver, "Enregistre la liste ")
    ButtonGadget(#Button_Effacer,380,10,100,20,"EFFACER")
     GadgetToolTip(#Button_Effacer, "Supprime un poids de la liste en cochant la case  ")
    SetGadgetFont(#Button_Ajouter,FontID(#Font_Button)) 
     SetGadgetFont(#Button_Sauver,FontID(#Font_Button))  
    SetGadgetFont(#Button_Effacer,FontID(#Font_Button))  
    
    BindEvent(#PB_Event_CloseWindow,@Close(),#Form_Main)
    BindGadgetEvent(#Button_Ajouter,@Ajoute())
    BindGadgetEvent(#Button_Sauver,@Sauver())
    BindGadgetEvent(#Button_Effacer,@Effacer())
    EndProcedure  



;-- Boucle du programme 

open_Main()
ChargeList()
Repeat
  WaitWindowEvent()
  ForEver
  
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Rosa un petit soft pour les personnes qui se pèsent

Message par MLD »

Bonjour grendizer
haie! j'ai réussi a entrer 5000kg pour le poids de ma femme 8O :mrgreen:
Limite le nombre d'entrée dans le StringGadget.
La date du jour pourrait apparaitre automatiquement avec la possibilité de la modifier. :wink:
A mon avis l'utilisation systématique des BindGadgetEvent rend complexe un petit soft comme celui-ci, mais ce n'est que mon avis. :roll:
bonne journée
michel
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Re: Rosa un petit soft pour les personnes qui se pèsent

Message par grendizer »

Merci pour tes conseils justement j'ai crée ce logiciel pour apprendre a utiliser les BindGadgetEvent
Répondre