FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Pour mieux surveiller son poids Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Pour mieux surveiller son poids Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Pour mieux surveiller son poids Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Pour mieux surveiller son poids Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Pour mieux surveiller son poids Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Pour mieux surveiller son poids Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Pour mieux surveiller son poids Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Pour mieux surveiller son poids Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Pour mieux surveiller son poids Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Pour mieux surveiller son poids Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Pour mieux surveiller son poids Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Pour mieux surveiller son poids Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Pour mieux surveiller son poids Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Pour mieux surveiller son poids Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Pour mieux surveiller son poids Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -17%
(Black Friday) Apple watch Apple SE GPS + Cellular ...
Voir le deal
249 €

 

 Pour mieux surveiller son poids

Aller en bas 
3 participants
AuteurMessage
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Pour mieux surveiller son poids Empty
MessageSujet: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptyJeu 30 Sep 2021 - 15:42

C'est tout nouveau, et sans rapport avec les jeux,
là, c'est un utilitaire pour travailler sa santé,
et ne pas laisser son poids monter, monter, monter,
(et ne plus guère redescendre)...
Faire un bilan (mensuel, annuel, et même un suivi sur les années...)
C'est important, la santé !

Voici le source :
Code:
rem ' Poidsoramic - Mesure de l'évolution du poids du corps - jjn4 - 30/09/2021
  dim IMD% : rem Indicateur de Modifications dans les Données
  dim MJC% : rem Moment de la Journée Concerné (0=Matin 1=Soir)
  dim NM$(12) : rem Nom des Mois
  dim TA$ : rem Texte de l`Aide
  dim V1M% , V2M% , V3M$ : rem Variables à utilisation Multiple
  label change : rem Regroupement de tous les on-change
  label clic : rem Regroupement de tous les on-click
  label close : rem Gestion de l`on-close
  label key : rem Gestion des entrées par la touche d`entrée du clavier
  dll_on "user32"
 
rem Form0 et autres préparations ==============================================
  width 0,1365
  height 0,720
  font_bold 0
  font_size 0,24
  font_name 0,"Arial"
  color 0,255,255,155
  caption 0,"  Poidsoramic - Mesure de l'évolution du poids du corps humain"
  on_close 0,close
  for V1M% = 1 to 12 : read NM$(V1M%) : next V1M%
  for V1M% = 1 to 14
      read V3M$
      TA$=TA$+V3M$+chr$(13)
  next V1M%
 
grid 100 : rem Grille annuelle d`évolution du poids ===========================
  hide 100
  top 100,101
  width 100,1348
  height 100,680
  grid_column 100,32
  grid_row 100,25
  grid_column_width 100,38
  grid_row_height 100,22
  grid_one_column_width 100,1,134
  grid_fixed_color 100,200,220,220
  font_name 100,"Arial"
  font_bold_off 100
  font_size 100,12
  marge()
  on_click 100,clic
 
list 110 : rem Choix de l`année d`évolution du poids ==========================
  left 110,10
  top 110,5
  width 110,110
  height 110,92
  color 110,255,230,0
  for V1M% = 2021 to 2071
      item_add 110,V1M%
  next V1M%
  on_click 110,clic
 
alpha 120 : rem Affichage du titre du jour pour la case cliquée ===============
  left 120,135
  top 120,5
  font_bold_off 120
  font_size 120,8
  caption 120,"Jour :"
alpha 130 : rem Affichage du jour pour la case cliquée
  left 130,140
  top 130,17
  font_color 130,255,0,0
     
alpha 140 : rem Affichage du titre du mois pour la case cliquée ===============
  left 140,135
  top 140,50
  font_bold_off 140
  font_size 140,8
  caption 140,"Mois :"
alpha 150 : rem Affichage du mois pour la case cliquée
  left 150,140
  top 150,62
  font_color 150,255,0,0
 
alpha 160 : rem Affichage du titre pour une entrée au matin ===================
  left 160,195
  top 160,10
  caption 160,"Matin :"
  inactive 160
edit 170 : rem Affichage de la zone d`entrée des données nouvelles pour le matin
  left 170,310
  top 170,5
  width 170,85
  height 170,45
  inactive 170
  color 170,255,230,0
  on_change 170,change
  on_key_up 170,key
button 180 : rem Affichage du bouton d`entrée des données nouvelles pour le matin
  left 180,405
  top 180,5
  width 180,130
  height 180,45
  caption 180,"Écrire"
  inactive 180
  on_click 180,clic
 
alpha 190 : rem Affichage du titre pour une entrée au soir ====================
  left 190,195
  top 190,59
  caption 190,"Soir  :"
  inactive 190
edit 200 : rem Affichage de la zone d`entrée des données nouvelles pour le soir
  left 200,310
  top 200,52
  width 200,85
  height 200,45
  color 200,255,230,0
  inactive 200
  on_change 200,change
  on_key_up 200,key
button 210 : rem Affichage du bouton d`entrée des données nouvelles pour le soir
  left 210,405
  top 210,52
  width 210,130
  height 210,45
  caption 210,"Écrire"
  inactive 210
  on_click 210,clic

rem Affichage des Minimum Maximum et Moyennes annuels =========================
alpha 220 : rem Affichage du titre pour le Minimum pour le Matin
  left 220,550
  top 220,5
  font_bold_off 220
  font_size 220,8
  caption 220,"Min / Matin  :"
alpha 230 : rem Affichage du poids Minimum pour le Matin
  left 230,620
  top 230,5
  font_bold_off 230
  font_size 230,8
  font_color 230,255,0,0
alpha 240 : rem Affichage du titre pour le Maximum pour le Matin
  left 240,550
  top 240,20
  font_bold_off 240
  font_size 240,8   
  caption 240,"Max / Matin :"
alpha 250 : rem Affichage du poids Maximum pour le Matin
  left 250,620
  top 250,20
  font_bold_off 250
  font_size 250,8
  font_color 250,255,0,0
alpha 260 : rem Affichage du titre du poids Moyen pour la Matin
  left 260,550
  top 260,35
  font_bold_off 260
  font_size 260,8
  font_color 260,0,155,0
  caption 260,"Moy / Matin :"
alpha 270 : rem Affichage du poids Moyen pour le Matin
  left 270,620
  top 270,35
  font_bold_off 270
  font_size 270,8
  font_color 270,0,0,255
alpha 280 : rem Affichage du titre pour le Minimum pour le Soir
  left 280,550
  top 280,52
  font_bold_off 280
  font_size 280,8
  caption 280,"Min / Soir    :"
alpha 290 : rem Affichage du poids Minimum pour le Soir
  left 290,620
  top 290,52
  font_bold_off 290
  font_size 290,8
  font_color 290,255,0,0
alpha 300 : rem Affichage du titre pour le Minimum pour le Soir
  left 300,550
  top 300,67
  font_bold_off 300
  font_size 300,8
  caption 300,"Max / Soir  :"
alpha 310 : rem Affichage du Minimum pour le Soir
  left 310,620
  top 310,67
  font_bold_off 310
  font_size 310,8
  font_color 310,255,0,0
alpha 320 : rem Affichage du titre du poids Moyen pour le Soir
  left 320,550
  top 320,82
  font_bold_off 320
  font_size 320,8
  font_color 320,0,155,0
  caption 320,"Moy / Soir  :"
alpha 330 : rem Affichage du poids Moyen pour le Soir
  left 330,620
  top 330,82
  font_bold_off 330
  font_size 330,8
  font_color 330,0,0,255

panel 340 : rem Affichage du bouton de graphique mensuel ======================
  left 340,655
  top 340,5
  width 340,180
  height 340,92
  color 340,200,200,200
  on_click 340,clic
  inactive 340
alpha 350 : rem Affichage en double ligne du texte du bouton mensuel
  parent 350,340
  top 350,10
  font_color 350,100,100,100
  caption 350," Graphique"+chr$(13)+"  mensuel"
  on_click 350,clic
 
panel 360 : rem Affichage du bouton de graphique annuel =======================
  left 360,840
  top 360,5
  width 360,180
  height 360,92
  color 360,200,200,200
  on_click 360,clic
  inactive 360
alpha 370 : rem Affichage en double ligne du texte du bouton annuel
  parent 370,360
  top 370,10
  font_color 370,100,100,100
  caption 370," Graphique"+chr$(13)+"    annuel"
  on_click 370,clic
 
rem Affichage des trois boutons de droite ===================================== 
button 375 : rem Affichage du bouton flèche vers la droite
  left 375,1025
  top 375,5
  width 375,85
  height 375,92
  font_size 375,48
  font_name 375,"Wingdings"
  caption 375,chr$(196)
  on_click 375,clic
  inactive 375 
button 380 : rem Affichage du bouton d`Aide
  left 380,1115
  top 380,5
  width 380,100
  height 380,92
  caption 380,"Aide"
  on_click 380,clic
button 390 : rem Affichage du bouton Enregistrer
  left 390,1220
  top 390,5
  width 390,120
  height 390,92
  caption 390,"Enreg"
  on_click 390,clic

panel 400 : rem Graphique mensuel =============================================
  hide 400
  width 400,1349
  height 400,100
picture 410
  parent 410,400
  full_space 410     
button 420 : rem Bouton de sortie du graphique mensuel
  parent 420,400
  left 420,2
  top 420,28
  width 420,62
  height 420,70
  font_size 420,12
  caption 420,"Sortir"
  on_click 420,clic
 
panel 430 : rem Graphique annuel ==============================================
  hide 430
  width 430,1349
  height 430,100
picture 440
  parent 440,430
  full_space 440
button 450 : rem Bouton de sortie du graphique annuel
  parent 450,430
  left 450,2
  top 450,28
  width 450,62
  height 450,70
  font_size 450,12
  caption 450,"Sortir"
  on_click 450,clic
                 
end : ' Début des routines ====================================================

sub aide() : rem Explications sur le fonctionnement du programme ==============
  application_title "  Fonctionnement du programme"
  message TA$
end_sub

sub bleu(qd%) : rem Déplacement de la coloration bleue des cellules ===========
  dim_local v1bl%
  rem qd% = Dans Quelle Direction bouger le bleu
  set_focus 100
  select qd%
      case 2 :' Haut
        v1bl% = dll_call4("keybd_event",38,0,0,0)
      case 3 :' Droite
        v1bl% = dll_call4("keybd_event",39,0,0,0)
      case 4 :' Bas
        v1bl% = dll_call4("keybd_event",40,0,0,0)
      case 6 :' Haut-gauche
        v1bl% = dll_call4("keybd_event",33,0,0,0)    : ' Top
        v1bl% = dll_call4("keybd_event",36,0,0,0)    : ' Début
    end_select
    display
end_sub

sub calcul() : rem Calcul des Min Max et Moy ==================================
  dim_local v1cx% , v1cy% , v1ca , v2ca% , v1mi , v1ma
  v1mi=200 : ' Calculs pour le Matin
  for v1cy% = 2 to 24 step 2
      for v1cx% = 2 to 32
        if grid_read$(100,v1cy%,v1cx%)<>"" : ' and grid_read$(100,v1cy%,v1cx%)<>"###"
            v1ca=v1ca+val(grid_read$(100,v1cy%,v1cx%))
            v2ca%=v2ca%+1
            if val(grid_read$(100,v1cy%,v1cx%))>v1ma
              v1ma=val(grid_read$(100,v1cy%,v1cx%))
            end_if
            if val(grid_read$(100,v1cy%,v1cx%))<v1mi
              v1mi=val(grid_read$(100,v1cy%,v1cx%))
            end_if   
        end_if
      next v1cx%
  next v1cy%
  if v1mi<200
      caption 230,v1mi : ' Minimum du Matin
  end_if
  if v1ma>0
      caption 250,v1ma : ' Maximum du Matin
  end_if
  if v2ca%>0
      caption 270,int((v1ca/v2ca%)*10)/10 : ' Moyenne du Matin
  end_if
  v1ca=0 : v2ca%=0 : v1mi=200 : v1ma=0 : ' Calculs pour le Soir
  for v1cy% = 3 to 25 step 2
      for v1cx% = 2 to 32
        if grid_read$(100,v1cy%,v1cx%)<>""
            v1ca=v1ca+val(grid_read$(100,v1cy%,v1cx%))
            v2ca%=v2ca%+1
            if val(grid_read$(100,v1cy%,v1cx%))>v1ma
              v1ma=val(grid_read$(100,v1cy%,v1cx%))
            end_if
            if val(grid_read$(100,v1cy%,v1cx%))<v1mi
              v1mi=val(grid_read$(100,v1cy%,v1cx%))
            end_if   
        end_if
      next v1cx%
  next v1cy%
  if v1mi<200
      caption 290,v1mi : ' Minimum du Soir
  end_if
  if v1ma>0
      caption 310,v1ma : ' Maximum du Soir
  end_if
  if v2ca%>0
      caption 330,int((v1ca/v2ca%)*10)/10 : ' Moyenne du Soir
  end_if
end_sub

change: : rem Regroupement de tous les on-change ==============================
  select number_change
      case 170 : active 180
      case 200 : active 210
  end_select
return

clic: : rem Regroupement de tous les on-click =================================
  select number_click
      case 100 : ' Clic sur le grid
        inactive 375
        V1M%=int((mouse_x_position(100)-135)/39)+1
        V2M%=int((mouse_y_position(100)-23)/46)+1
        caption 130,V1M%
        caption 150,V2M%
        V1M%=int((mouse_y_position(100)-23)/23)+1
        off_change 170
        text 170,""
        on_change 170,change
        off_change 200
        text 200,""
        on_change 200,change
        if even(V1M%)=0 : ' Matin ou Après-midi
            MJC%=0
            active 160
            active 170
            set_focus 170
            inactive 180
            inactive 190
            inactive 200
            inactive 210
        else
            MJC%=1
            inactive 160
            inactive 170
            inactive 180
            inactive 210
            active 190
            active 200
            set_focus 200
        end_if
        active 340
        color 340,160,200,200
        color 350,160,200,200
        font_color 350,0,0,0   
      case 110 : ' Clic sur la liste des années
        inactive 160
        inactive 170
        inactive 180
        inactive 190
        inactive 200
        inactive 210
        gosub close
        IMD%=0
        show 100
        for V1M% = 230 to 330 step 20
            caption V1M%,""
        next V1M%
        grid_clear 100,25,32
        if file_exists(dir_current$+"\Poidsoramic-"+item_index$(110)+".txt")=1
            grid_load 100,dir_current$+"\Poidsoramic-"+item_index$(110)+".txt"
        else
            marge()
            grid_write 100,1,1,string$(11," ")+item_index$(110)
        end_if
        calcul()
        active 360
        color 360,160,200,200
        color 370,160,200,200
        font_color 370,0,0,0
        caption 130,""
        caption 150,""
        inactive 340
        color 340,200,200,200
        color 350,200,200,200
        font_color 350,100,100,100
      case 180 : ' Clic sur Écrire pour le Matin
        if text$(170)<>""
            for V1M% = 2 to len(text$(170))-1
              if mid$(text$(170),V1M%,1)=","
                  text 170,left$(text$(170),V1M%-1)+"."+right_pos$(text$(170),V1M%+1)
                  exit_for
              end_if
            next V1M%
            if numeric(text$(170))=1
              grid_write 100,(val(caption$(150))*2)+MJC%,val(caption$(130))+1,text$(170)
              if text$(170)="0"
                  grid_write 100,(val(caption$(150))*2)+MJC%,val(caption$(130))+1,""
              end_if
              IMD%=1
              text 170,""
              inactive 160
              inactive 170
              inactive 180
              active 375
            end_if
        end_if
        calcul()
      case 210 : ' Clic sur Écrire pour le Soir
        if text$(200)<>""
            for V1M% = 2 to len(text$(200))-1
              if mid$(text$(200),V1M%,1)=","
                  text 200,left$(text$(200),V1M%-1)+"."+right_pos$(text$(200),V1M%+1)
                  exit_for
              end_if
            next V1M%
            if numeric(text$(200))=1
              grid_write 100,(val(caption$(150))*2)+MJC%,val(caption$(130))+1,text$(200)
              if text$(200)="0"
                  grid_write 100,(val(caption$(150))*2)+MJC%,val(caption$(130))+1,""
              end_if
              IMD%=1
              text 200,""
              inactive 190
              inactive 200
              inactive 210
              active 375
            end_if
        end_if
        calcul()
      case 340 : graph_m() : ' Bouton Graphique mensuel
      case 350 : graph_m()
      case 360 : graph_a() : ' Bouton graphique annuel
      case 370 : graph_a()
      case 375 : droite() : ' Bouton Flèche à droite
      case 380 : aide() : ' Bouton Aide
      case 390 : enreg() : ' Bouton Enregistrer
      case 420 : hide 400 : active 100 : ' Fermer le Graphique mensuel
      case 450 : hide 430 : active 100 : ' Fermer le Graphique annuel
  end_select
return

close: : rem Gestion de l`on-close ============================================
  if IMD%=1
      V1M%=message_confirmation_yes_no("Souhaitez-vous enregistrer les données nouvelles ?")
      if V1M%=1
        enreg()
      end_if
  end_if
return

rem Datas =====================================================================
  data "Janvier" , "Février" , "Mars" , "Avril" , "Mai" , "Juin" , "Juillet"
  data "Août" , "Septembre" , "Octobre" , "Novembre" , "Décembre"
  data "- Pour entrer des données, choisir d'abord l'année,"
  data "  et ensuite le jour (Matin ou Après-Midi)"
  data ""
  data "- Après avoir inscrit votre poids, cliquez sur Écrire"
  data "  pour entrer la donnée dans la grille (ou tapez « Entrée »)"
  data ""
  data "- Appuyez sur la flèche droite pour passer à l'inscription"
  data "  du soir ou du lendemain"
  data ""
  data "- Pour consulter le graphique annuel, une année"
  data "  doit avoir été choisie dans la liste"
  data ""
  data "- Pour consulter le graphique mensuel, vous devez"
  data "  choisir un mois en cliquant dans la grille"
rem Fin des datas

sub droite() : rem Passage à la case de droite ou suivante ====================
  dim_local v1dr%
  off_click 100
  if MJC%=0
      MJC%=1
      bleu(4)
      active 190
      active 200
      active 210
      set_focus 200
  else
      MJC%=0
      if val(caption$(130))<31
        caption 130,val(caption$(130))+1
        bleu(3)
        bleu(2)
        active 160
        active 170
        active 180
        set_focus 170
      else
        if val(caption$(150))<12
            caption 150,val(caption$(150))+1
            caption 130,"1"
            bleu(6)
            for v1dr% = 1 to (val(caption$(150))-1)*2
              bleu(4)
              display
            next v1dr%
            active 160
            active 170
            active 180
            set_focus 170
        else
            inactive 375
        end_if
      end_if
  end_if
  on_click 100,clic
  inactive 375
end_sub

sub enreg() : rem Enregistrer les données =====================================
  dim_local v1en$
  v1en$=trim$(grid_read$(100,1,1))
  grid_save 100,25,32,dir_current$+"\Poidsoramic-"+v1en$+".txt"
  IMD%=0
  beep
end_sub

sub graph_a() : rem Tracé du graphique annuel =================================
  dim_local mia , maa , dmm% : ' MinimumAnnuel , MaximumAnnuel , DiffMaxMin
  dim_local mipd% , mape% : ' MinimumParDéfaut , MaximumParExcès
  dim_local eek : ' EspaceEntrelesKilos
  dim_local v1ga% , v2ga% , v3ga% , v4ga : ' Variables à utilisation multiple
  inactive 100
  show 430
  font_size 440,6
  color 440,255,255,255
  print_target_is 440
  2d_target_is 440
  2d_flood 2,2,255,255,255
  ' Tracé des lignes d'abscisse et d'ordonnée
  font_color 440,0,0,0
  font_bold_off 440
  2d_pen_color 0,0,0
  2d_line 132,95,1340,95
  2d_line 132,95,132,-1
  for v1ga% = 1 to 13 : ' Tracé des coches des mois de l'année
      2d_line (v1ga%-1)*97+153,93,(v1ga%-1)*97+153,98
  next v1ga%
  for v1ga% = 1 to 12 : ' Tracé des indications de mois
      print_locate (v1ga%-1)*97+186,85
      print NM$(v1ga%)
  next v1ga%
  ' Calcul du Minima et Maxima annuel
  mia=300
  if caption$(290)<>""
      if val(caption$(290))<mia
        mia=val(caption$(290))
      end_if
  end_if
  if caption$(230)<>""
      if val(caption$(230))<mia
        mia=val(caption$(230))
      end_if
  end_if
  if caption$(250)<>""
      if val(caption$(250))>maa
        maa=val(caption$(250))
      end_if
  end_if
  if caption$(310)<>""
      if val(caption$(310))>maa
        maa=val(caption$(310))
      end_if
  end_if
  mipd%=int(mia) : ' = Minimum Mensuel
  mape%=int(maa)+1 : ' = Maximum Mensuel
  dmm%=mape%-mipd%
  if dmm%>0
      eek=75/dmm%
  end_if
  for v1ga% = 1 to dmm%+1 : ' Tracé des coches des poids
      2d_line 130,81-(v1ga%-1)*eek,134,81-(v1ga%-1)*eek
  next v1ga%
  for v1ga% = mipd% to mape% : ' Tracé des indications des poids
      print_locate 136,(v1ga%-mipd%)*eek+1
      print mipd%+mape%-v1ga%
  next v1ga%     
  ' Tracé des lignes grises verticales et horizontales
  2d_pen_color 200,200,200
  for v1ga% = 1 to 13
      2d_line (v1ga%-1)*97+153,2,(v1ga%-1)*97+153,85
  next v1ga%
  for v1ga% = 1 to dmm%+1
      2d_line 147,81-(v1ga%-1)*eek,1325,81-(v1ga%-1)*eek
  next v1ga%
  ' Tracé de la courbe de poids du matin
  v3ga%=0
  2d_pen_color 0,100,0
  for v1ga% = 1 to 12
      for v2ga% = 1 to 31
        if grid_read$(100,v1ga%*2,v2ga%+1)<>""
            v4ga=val(grid_read$(100,v1ga%*2,v2ga%+1))
            if v3ga%=0
              2d_poly_from ((v1ga%-1)*31+v2ga%)*3.13+151,81-(v4ga-mipd%)*eek
              v3ga%=1
            end_if
            2d_poly_to ((v1ga%-1)*31+v2ga%)*3.13+151,81-(v4ga-mipd%)*eek
        end_if
      next v2ga%
  next v1ga%
  ' Tracé de la courbe de poids du soir
  v3ga%=0
  2d_pen_color 255,0,0
  for v1ga% = 1 to 12
      for v2ga% = 1 to 31
        if grid_read$(100,v1ga%*2+1,v2ga%+1)<>""
            v4ga=val(grid_read$(100,v1ga%*2+1,v2ga%+1))
            if v3ga%=0
              2d_poly_from ((v1ga%-1)*31+v2ga%)*3.13+151,81-(v4ga-mipd%)*eek
              v3ga%=1
            end_if
            2d_poly_to ((v1ga%-1)*31+v2ga%)*3.13+151,81-(v4ga-mipd%)*eek
        end_if
      next v2ga%
  next v1ga%
  ' Tracé des Indications Matin et Soir
  2d_flood 2,2,255,200,255
  font_bold 440
  font_size 440,14
  font_color 440,0,100,0
  print_locate 70,25
  print "Matin"
  2d_pen_color 0,100,0
  2d_line 70,50,125,50
  font_color 440,255,0,0
  print_locate 70,60
  print "Soir"
  2d_pen_color 255,0,0
  2d_line 70,85,125,85
  font_color 440,0,0,255
  print_locate 30,1
  print trim$(grid_read$(100,1,1)) 
end_sub

sub graph_m() : rem Tracé du graphique mensuel ================================
  dim_local mim , mam , dmm% : ' MinimumMensuel , MaximumMensuel , DiffMaxMin
  dim_local mipd% , mape% : ' MinimumParDéfaut , MaximumParExcès
  dim_local moym , moys : ' MoyenneMatin , MoyenneSoir
  dim_local nomm% , noms% : ' NombreDonnéesMatin , NombreDonnéesSoir
  dim_local eek : ' EspaceEntrelesKilos
  dim_local v1gr% , v2gr% , v3gr$ , v4gr : ' Variables à utilisation multiple
  inactive 100
  show 400
  font_size 410,6
  color 410,255,255,255
  print_target_is 410
  2d_target_is 410
  2d_flood 2,2,255,255,255
  ' Tracé des lignes d'abscisse et d'ordonnée
  font_color 410,0,0,0
  font_bold_off 410
  2d_pen_color 0,0,0
  2d_line 132,95,1340,95
  2d_line 132,95,132,-1
  for v1gr% = 1 to 31 : ' Tracé des coches des jours du mois
      2d_line (v1gr%-1)*39+153,93,(v1gr%-1)*39+153,98
  next v1gr%
  for v1gr% = 1 to 31 : ' Tracé des indications de jours
      print_locate (v1gr%-1)*39+150,83
      print v1gr%
  next v1gr%
  ' Calcul du Minima et Maxima mensuel et des moyennes matin et soir
  mim=300
  for v1gr% = 0 to 1
      for v2gr% = 1 to 31
        v3gr$=grid_read$(100,val(caption$(150))*2+v1gr%,v2gr%+1)
        if v3gr$<>""
            if val(v3gr$)<mim
              mim=val(v3gr$)
            end_if
            if val(v3gr$)>mam
              mam=val(v3gr$)
            end_if
            if v1gr%=0
              moym=moym+val(v3gr$)
              nomm%=nomm%+1
            else
              moys=moys+val(v3gr$)
              noms%=noms%+1
            end_if
        end_if
      next v2gr%
  next v1gr%
  if nomm%>0 : ' Moyennes mensuelles du Matin et du Soir
      moym=int((moym/nomm%)*10)/10
  end_if
  if noms%>0
      moys=int((moys/noms%)*10)/10
  end_if
  mipd%=int(mim) : ' = Minimum Mensuel
  mape%=int(mam)+1 : ' = Maximum Mensuel
  dmm%=mape%-mipd%
  if dmm%>0
      eek=75/dmm%
  end_if
  for v1gr% = 1 to dmm%+1 : ' Tracé des coches des poids
      2d_line 130,81-(v1gr%-1)*eek,134,81-(v1gr%-1)*eek
  next v1gr%
  for v1gr% = mipd% to mape% : ' Tracé des indications des poids
      print_locate 136,(v1gr%-mipd%)*eek+1
      print mipd%+mape%-v1gr%
  next v1gr%     
  ' Tracé des lignes grises verticales et horizontales
  2d_pen_color 200,200,200
  for v1gr% = 1 to 31
      2d_line (v1gr%-1)*39+153,2,(v1gr%-1)*39+153,83
  next v1gr%
  for v1gr% = 1 to dmm%+1
      2d_line 147,81-(v1gr%-1)*eek,1340,81-(v1gr%-1)*eek
  next v1gr%
  ' Tracé de la courbe de poids du matin
  v2gr%=0
  2d_pen_color 0,100,0
  for v1gr% = 1 to 31
      if grid_read$(100,val(caption$(150))*2,v1gr%+1)<>""
        v4gr=val(grid_read$(100,val(caption$(150))*2,v1gr%+1))
        if v2gr%=0
            2d_poly_from (v1gr%-1)*39+153,81-(v4gr-mipd%)*eek
            v2gr%=1
        end_if
        2d_poly_to (v1gr%-1)*39+153,81-(v4gr-mipd%)*eek
      end_if
  next v1gr%
  ' Tracé de la courbe de poids du soir
  v2gr%=0
  2d_pen_color 255,0,0
  for v1gr% = 1 to 31
      if grid_read$(100,val(caption$(150))*2+1,v1gr%+1)<>""
        v4gr=val(grid_read$(100,val(caption$(150))*2+1,v1gr%+1))
        if v2gr%=0
            2d_poly_from (v1gr%-1)*39+153,81-(v4gr-mipd%)*eek
            v2gr%=1
        end_if
        2d_poly_to (v1gr%-1)*39+153,81-(v4gr-mipd%)*eek
      end_if
  next v1gr%
  ' Tracé des Indications Matin, Soir et du Mois
  2d_flood 2,2,175,255,0
  font_bold 410
  font_size 410,14
  font_color 410,0,100,0
  print_locate 70,22
  print "Matin"
  font_size 410,6
  print_locate 74,45
  print "Moy = "+str$(moym)
  2d_pen_color 0,100,0
  2d_line 70,43,125,43
  font_size 410,14
  font_color 410,255,0,0
  print_locate 70,58
  print "Soir"
  font_size 410,6
  print_locate 74,81
  print "Moy = "+str$(moys)
  2d_pen_color 255,0,0
  2d_line 70,79,125,79
  font_size 410,14
  font_color 410,0,0,255
  print_locate 10,1
  print NM$(val(caption$(150))) 
end_sub

key: : rem Gestion des entrées par la touche d`entrée du clavier ==============
  if key_up_code=13
      select number_key_up
        case 170 : trigger_click 180
        case 200 : trigger_click 210
      end_select
  end_if
return

sub marge() : rem Remplissage des marges du grid ==============================
  dim_local v1ma%
  for v1ma% = 1 to 12
      grid_write 100,v1ma%*2,1,NM$(v1ma%)+" - Matin"
      grid_write 100,v1ma%*2+1,1,"                      Soir"
  next v1ma%
  for v1ma% = 1 to 31
      grid_write 100,1,v1ma%+1,"  "+str$(v1ma%)
  next v1ma%
end_sub
Je le mets là, puisqu'il est sans fichier annexe.
Je le mets aussi sur le site des utilitaires : panoramic@jjn42 avec son exécutable
Pratique, qu'est-ce que vous en pensez ?
alien


Dernière édition par jjn4 le Sam 9 Oct 2021 - 15:42, édité 1 fois
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptyVen 1 Oct 2021 - 23:47

Bravo JJN4 !
J’ai effectué quelques tests avec succès.
Les graphiques fonctionnent bien. La mise à l’échelle dans l’axe Y, en fonction des mini/maxi  est remarquable. Enregistrement, sauvegarde, restitution, tout est ok !

Juste une petite anomalie d’affichage : dans le GRID, les mots "Soir" sont tronqués. Pour info, je suis sous W10.

Bonne continuation !


Pour mieux surveiller son poids Jjn4_b17
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptySam 2 Oct 2021 - 10:43

Bonjour jjn4

Bravo, Belle réalisation.  cheers

Sinon j'ai le même problème que Marc concernant les mots "Soir".

Il faudrait peut être que tu calcules l'espace de "Janvier - " et tu alignes "Soir" sur cet espace.
En utilisant TEXT_WIDTH() ça doit être possible je pense... Wink
Enfin, c'est une idée. sunny
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptySam 2 Oct 2021 - 16:09

Ce décalage, qui n'existait pas lorsque j'ai créé le programme,
est dû au fait que je créée en éditeur 29.i7
(j'ai toujours du mal avec le i11)
(mais au fait, c'est le i9 ou le i11 que vous utilisez ?
je vois que le i11 a disparu des écrans sur le forum ?
en tout cas, même avec le i9, les textes sont plus gras et plus longs,
c'est pour ça que ça déborde)
et quand on le transfère dans un i11, (ou le i9) ça décale les tailles
exactement comme cela avait fait en passant de Win7 à Win8.
J'avoue que j'ai un peu la flemme de devoir l'adapter...
Enfin, je verrai quand j'y aurais intégré cette façon de
pousser la cellule bleuie avec les dll proposés par Marc
(sans oublier Klaus et les autres intervenants)
Le problème, c'est que leur application dans Poidsoramic
pose réellement de curieux problèmes de décalage
de contenus de variables ou de nombres affichés
qui fait que cela ne marche plus du tout.
(tous ces problèmes ont été réglés avec votre concours dans le chapitre : A l'aide...)
scratch
En attendant, si vous souhaitez l'utiliser pour suivre de près votre poids,
utilisez l'exécutable proposé sur le site jjn42.
tongue
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptySam 9 Oct 2021 - 15:53

Ca y est, j'ai amélioré le style en y ajoutant les utilisations de dll
que vous m'avez conseillées. Ah, ça donne tout de suite meilleur style !
Je n'ai pas utilisé le truc de Marc avec le memo qui se déplace,
(non pas parce que ce n'est pas bien, loin de là), mais parce que
lorsqu'on utilise un clavier virtuel (qui vient cacher tout le bas de
l'écran), c'est plus pratique avec un edit situé tout en haut).
(Ce sera pour un prochain programme...)
rabbit
NOTA :
Le listing du programme corrigé a été placé plus haut, à la place
du premier essai dans le premier post (c'est plus écologique, non ?)
Laughing
Maintenant, vous pouvez y aller, et suivre l'évolution de votre poids.
J'en ai profité pour corriger les décalages pour que ça marche bien
quelle que soit la version utilisée...
Alors, à vos balances, prêts ?, partez !
lol!
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptySam 9 Oct 2021 - 16:25

Bonjour JJN4 et le bonjour à tous !

Bravo ! Testé avec succès !
Et les mots "Soir" sont bien visibles.

Juste un petit détail technique qui n’entrave pas le bon fonctionnement du programme.
Ligne 309, la fonction "keybd_event",33,0,0,0"  ne permet pas de remonter en haut d’un GRID. L’action de la touche-clavier 33 permet juste de sauter d’une page vers le haut (page UP). Mais comme ton GRID ne comporte qu’une seule "petite page", effectivement le curseur se retrouve donc en haut. La bonne séquence de touches à envoyer est "Ctrl + début", en anglais "Ctrl + Home". Ce sont les touches du clavier 17 et 36.

Bonne continuation !
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptyDim 10 Oct 2021 - 14:54

Ok je prends en compte,
mais comme en mettant que le keybd_event 36, ça ne marche pas comme je veux,
et en mettant keybd_event 17 suivi de keybd_event 36, ça ne marche pas bien non plus,
alors je laisse comme ça, même si ce n'est pas très catholique, ça marche, ce qui est le principal.
Merci cependant de tous les conseils.
Je vais tenter de les appliquer pour un autre prochain programme que je concocte...
cheers Twisted Evil
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptyDim 10 Oct 2021 - 16:02

Salut JJN4 !

Encore une petite précision. Avec la dll User32 et la fonction keybd_event, si tu simules l’appui sur la touche Ctrl, il faut penser, à la fin de ta combinaison de touches, à relâcher la touche Ctrl avec "res% = dll_call4("keybd_event",17,0,2,0)".

Voici la séquence pour simuler un "Ctrl + Home" :

           res% = dll_call4("keybd_event",17,0,0,0) :’ appui sur Ctrl
           res% = dll_call4("keybd_event",36,0,0,0) :’ appui sur Home
           res% = dll_call4("keybd_event",17,0,2,0) :’ relâchement de Ctrl

A+
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptyDim 10 Oct 2021 - 18:53

Hum, bon à savoir, ça !
Bravo, Marc !
cheers
Et euhhhhh, et ils servent à quoi, les 2 autres zéros ?
(oui, je sais, je chipote...) Laughing
scratch Mad study
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids EmptyMar 31 Oct 2023 - 16:37

J'ai édité une nouvelle version du logiciel
qui lui ajoute un peu plus de couleurs...
Voir sur le webdav si vous voulez surveiller votre poids...
alien Laughing
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Contenu sponsorisé





Pour mieux surveiller son poids Empty
MessageSujet: Re: Pour mieux surveiller son poids   Pour mieux surveiller son poids Empty

Revenir en haut Aller en bas
 
Pour mieux surveiller son poids
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» robotique et Panoramic
» Une seule ligne de code (ou presque). Qui dit mieux ?
» Surveiller le Forum
» Surveiller les sujets
» Un petit calculateur du IMC et du poids idéal

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: