FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Problème de math
par papydall Aujourd'hui à 1:53

» A propos des attributs de fichier
par papydall Hier à 14:33

» Problème de math
par Marc37 Sam 21 Oct 2017 - 23:04

» I Love You
par papydall Sam 21 Oct 2017 - 19:22

» Un petit "coucou" à tous les Panoramiciens !
par mindstorm Sam 21 Oct 2017 - 17:06

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Mer 18 Oct 2017 - 18:08

» mise a jour calculatrice
par joeeee2017 Mer 18 Oct 2017 - 15:57

» [solved] 3D_LINE How to ?
par Jicehel Mer 18 Oct 2017 - 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Calculatrice spéciale

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Marc37



Nombre de messages : 457
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Calculatrice spéciale   Dim 13 Sep 2015 - 23:51

Bonjour à tous !

Je vous présente mon dernier programme encore destiné à l'agriculture !

Code:
   ' ------ Calculatrice formule soupe v2.0 ------

   DIM Dilution
   DIM Saisie$
   DIM L%
   DIM A$
   DIM N%
   DIM B
   DIM i%
   DIM x%
   DIM x1%
   DIM X2%
   DIM y%
   DIM Y1%
   DIM y2%
   DIM TotalIncorpo
   DIM Pr$(9)
   DIM MS(9)
   DIM In(9)
   DIM PoidsReel(8)
   DIM Espace%
   DIM NbEspaces%
   DIM LongueurTexte%
   DIM Objet_Clique%

   Pr$(0)="Eau"

   LABEL Quitter
   LABEL SaisieDilution
   LABEL SaisieProduit
   LABEL SaisieMatiereSeche
   LABEL SaisieIncorporation
   LABEL EffaceColonne
   LABEL Selection_Champ_Numerique
   LABEL ToucheEntree
   LABEL DeplacementFenetre
   LABEL Selection_Champ_Texte

   IF FILE_EXISTS("Formule.dat")=0
      x% = 0
      y% = 0
      Ecriture_fichier()
   END_IF

   FILE_OPEN_READ 1, "Formule.dat"

      FOR i% = 0 to 8
         FILE_READLN 1, PR$(i%)
         FILE_READLN 1, MS(i%)
         FILE_READLN 1, IN(i%)
      NEXT i%

      FILE_READLN 1, Dilution
      FILE_READLN 1, x%
      FILE_READLN 1, y%

   FILE_CLOSE 1

   border_hide 0
      LEFT 0, x%
      TOP 0, y%
      width 0, 720
      height 0, 480
      color 0, 200,230,255
      Font_name 0, "Arial"
      FONT_SIZE 0,18

   ALPHA 1
      TOP 1, 10
      LEFT 1, 40
      caption 1, "C A L C U L A T R I C E   F O R M U L E   S O U P E   v 2.0 "
      ON_DOUBLE_CLICK 1, DeplacementFenetre

   BUTTON 2
      LEFT 2,19
      TOP 2, 44
      WIDTH 2, 172
      HEIGHT 2, 38
      CAPTION 2, "Produits"
      ON_CLICK 2, EffaceColonne

   BUTTON 3
      LEFT 3, 189
      TOP 3, 44
      WIDTH 3, 172
      HEIGHT 3, 38
      CAPTION 3, "% Mat. Sèche"
      ON_CLICK 3, EffaceColonne

   BUTTON 4
      LEFT 4, 359
      TOP 4, 44
      WIDTH 4, 172
      HEIGHT 4, 38
      CAPTION 4, "% incorpo."
      ON_CLICK 4, EffaceColonne

   BUTTON 5
      LEFT 5, 529
      TOP 5, 44
      WIDTH 5, 172
      HEIGHT 5, 38
      CAPTION 5, "Poids réel"

rem Colonne 1 PRODUITS

   EDIT 6
      LEFT 6, 20
      TOP 6, 81
      WIDTH 6, 170
      HEIGHT 6, 36
      TEXT 6, " Eau"
      INACTIVE 6

   EDIT 7
      LEFT 7, 20
      TOP 7, 117
      WIDTH 7, 170
      HEIGHT 7, 36

   EDIT 8
      LEFT 8, 20
      TOP 8, 153
      WIDTH 8, 170
      HEIGHT 8, 36

   EDIT 9
      LEFT 9, 20
      TOP 9, 189
      WIDTH 9, 170
      HEIGHT 9, 36

   EDIT 10
      LEFT 10, 20
      TOP 10, 225
      WIDTH 10, 170
      HEIGHT 10, 36

   EDIT 11
      LEFT 11, 20
      TOP 11, 261
      WIDTH 11, 170
      HEIGHT 11, 36

   EDIT 12
      LEFT 12, 20
      TOP 12, 297
      WIDTH 12, 170
      HEIGHT 12, 36

   EDIT 13
      LEFT 13, 20
      TOP 13, 333
      WIDTH 13, 170
      HEIGHT 13, 36

   EDIT 14
      LEFT 14, 20
      TOP 14, 369
      WIDTH 14, 170
      HEIGHT 14, 36

 rem Colonne 2 % M.S.

   EDIT 15
      LEFT 15, 190
      TOP 15, 81
      WIDTH 15, 170
      HEIGHT 15, 36
      INACTIVE 15

   EDIT 16
      LEFT 16, 190
      TOP 16, 117
      WIDTH 16, 170
      HEIGHT 16, 36

   EDIT 17
      LEFT 17, 190
      TOP 17, 153
      WIDTH 17, 170
      HEIGHT 17, 36

   EDIT 18
      LEFT 18, 190
      TOP 18, 189
      WIDTH 18, 170
      HEIGHT 18, 36

   EDIT 19
      LEFT 19, 190
      TOP 19, 225
      WIDTH 19, 170
      HEIGHT 19, 36

   EDIT 20
      LEFT 20, 190
      TOP 20, 261
      WIDTH 20, 170
      HEIGHT 20, 36

   EDIT 21
      LEFT 21, 190
      TOP 21, 297
      WIDTH 21, 170
      HEIGHT 21, 36

   EDIT 22
      LEFT 22, 190
      TOP 22, 333
      WIDTH 22, 170
      HEIGHT 22, 36

   EDIT 23
      LEFT 23, 190
      TOP 23, 369
      WIDTH 23, 170
      HEIGHT 23, 36

 rem Colonne 3 % incorpo.

   EDIT 24
      LEFT 24, 360
      TOP 24, 81
      WIDTH 24, 170
      HEIGHT 24, 36
      INACTIVE 24

   EDIT 25
      LEFT 25, 360
      TOP 25, 117
      WIDTH 25, 170
      HEIGHT 25, 36

   EDIT 26
      LEFT 26, 360
      TOP 26, 153
      WIDTH 26, 170
      HEIGHT 26, 36

   EDIT 27
      LEFT 27, 360
      TOP 27, 189
      WIDTH 27, 170
      HEIGHT 27, 36

   EDIT 28
      LEFT 28, 360
      TOP 28, 225
      WIDTH 28, 170
      HEIGHT 28, 36

   EDIT 29
      LEFT 29, 360
      TOP 29, 261
      WIDTH 29, 170
      HEIGHT 29, 36

   EDIT 30
      LEFT 30, 360
      TOP 30, 297
      WIDTH 30, 170
      HEIGHT 30, 36

   EDIT 31
      LEFT 31, 360
      TOP 31, 333
      WIDTH 31, 170
      HEIGHT 31, 36

   EDIT 32
      LEFT 32, 360
      TOP 32, 369
      WIDTH 32, 170
      HEIGHT 32, 36

rem Colonne 4 POIDS REEL

   EDIT 33
      LEFT 33, 530
      TOP 33, 81
      WIDTH 33, 170
      HEIGHT 33, 36

   EDIT 34
      LEFT 34, 530
      TOP 34, 117
      WIDTH 34, 170
      HEIGHT 34, 36

   EDIT 35
      LEFT 35, 530
      TOP 35, 153
      WIDTH 35, 170
      HEIGHT 35, 36

   EDIT 36
      LEFT 36, 530
      TOP 36, 189
      WIDTH 36, 170
      HEIGHT 36, 36

   EDIT 37
      LEFT 37, 530
      TOP 37, 225
      WIDTH 37, 170
      HEIGHT 37, 36

   EDIT 38
      LEFT 38, 530
      TOP 38, 261
      WIDTH 38, 170
      HEIGHT 38, 36

   EDIT 39
      LEFT 39, 530
      TOP 39, 297
      WIDTH 39, 170
      HEIGHT 39, 36

   EDIT 40
      LEFT 40, 530
      TOP 40, 333
      WIDTH 40, 170
      HEIGHT 40, 36

   EDIT 41
      LEFT 41, 530
      TOP 41, 369
      WIDTH 41, 170
      HEIGHT 41, 36

   FOR i% = 33 TO 41
      INACTIVE i%
   NEXT i%

REM DERNIERE LIGNE
      
   BUTTON 42
      LEFT 42, 19
      TOP 42, 422
      WIDTH 42, 172
      HEIGHT 42, 38
      CAPTION 42, "Dilution :"

   EDIT 43
      LEFT 43, 190
      TOP 43, 423
      WIDTH 43, 70
      HEIGHT 43, 36
      TEXT 43, Dilution
      ON_CHANGE 43, SaisieDilution
      ON_CLICK 43, Selection_Champ_Numerique
      ON_KEY_DOWN 43, ToucheEntree

   ALPHA 44
      LEFT 44, 360
      TOP 44, 426
      WIDTH 44, 180
      HEIGHT 44, 36

   BUTTON 45
      LEFT 45, 601
      TOP 45, 422
      WIDTH 45, 100
      HEIGHT 45, 38
      CAPTION 45, "Quitter"
      ON_CLICK 45, Quitter

   Espace% = text_width(" ",1) : ' Calcul longueur d'un espace texte

   FOR i% = 1 TO 8
      TEXT i%+6, PR$(i%)
   NEXT i%
  
   FOR i% = 1 to 8
      TEXT i%+15, MS(i%)
      TEXT i%+24, IN(i%)
   NEXT i%

   FOR i% = 1 TO 8
      ON_CHANGE i% + 6, SaisieProduit
      ON_CLICK i% +6, Selection_Champ_Texte
      ON_KEY_DOWN i% + 6, ToucheEntree
      ON_CHANGE i% + 15, SaisieMatiereSeche
      ON_CLICK i% +15, Selection_Champ_Numerique
      ON_KEY_DOWN i% + 15, ToucheEntree
      ON_CHANGE i% + 24, SaisieIncorporation
      ON_CLICK i% + 24, Selection_Champ_Numerique
      ON_KEY_DOWN i% + 24, ToucheEntree
   NEXT i%

   CalculFeuille()

   Mise_en_Forme()

   END

' ------------------------------------------------------------------------------

   Selection_Champ_Numerique:
  
      Objet_Clique% = NUMBER_CLICK

      Mise_en_Forme()

      LongueurTexte% = LEN(TEXT$(Objet_Clique%))

      IF LongueurTexte% > 2 AND Objet_Clique% < 33
         A$ = LEFT$(TEXT$(Objet_Clique%),LongueurTexte% - 1)
         ELSE
         A$ = TEXT$(Objet_Clique%)
      END_IF
      
      B = VAL(A$)
      TEXT Objet_Clique%, B
  
   RETURN

' ------------------------------------------------------------------------------

   Selection_Champ_Texte:

     Mise_en_Forme()

   RETURN

' ------------------------------------------------------------------------------

   SUB Mise_en_Forme()

      FOR i% = 7 to 14
         OFF_CHANGE i%
         A$ = PR$(i%-6)
         IF LEFT$(A$,1) <> " " THEN A$ = " " + A$
         TEXT i%, A$
         ON_CHANGE i%, SaisieProduit
      NEXT i%

      FOR i% = 16 to 23
         OFF_CHANGE i%
         A$ = STR$(MS(i%-15))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int((170 - LongueurTexte% - 70)/ Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " %"
         TEXT i%, A$
         ON_CHANGE i%, SaisieMatiereSeche
      NEXT i%

      FOR i% = 25 to 32
         OFF_CHANGE i%
         A$ = STR$(IN(i%-24))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int((170 - LongueurTexte% - 70)/ Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " %"
         TEXT i%, A$
         ON_CHANGE i%, SaisieIncorporation
      NEXT i%

      OFF_CHANGE 43
      A$ = STR$(Dilution)
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int(((70 - LongueurTexte%)/Espace%)/2)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$
      TEXT 43, A$
      ON_CHANGE 43, SaisieDilution

   END_SUB

' ------------------------------------------------------------------------------

   SaisieDilution:

      a$=RIGHT$(TEXT$(43),1)
      IF a$="" THEN Saisie$="0" : TEXT 43, Saisie$: Dilution = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(43))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(43),L%-1),".")<>0 THEN TEXT 43, LEFT$(TEXT$(43),L%-1) : CARET_POSITION 43, L% : RETURN
      IF a$="." or a$="," THEN TEXT 43, LEFT$(TEXT$(43),L%-1) + "." : CARET_POSITION 43, L% : Saisie$ = text$(43): Dilution = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT 43, LEFT$(TEXT$(43),L%-1) : CARET_POSITION 43, L% : RETURN
      IF LEN(TEXT$(43))=2 AND LEFT$(TEXT$(43),1)="0" THEN Saisie$ = A$ : TEXT 43, Saisie$
      Saisie$=LEFT$(TEXT$(43),4)
      TEXT 43, Saisie$
      L%=LEN(TEXT$(43)):CARET_POSITION 43, L%
      Dilution = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   SaisieProduit:

      N%=number_change
      PR$(N%-6)=LEFT$(TEXT$(N%),11)
      TEXT N%, PR$(N%-6)
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%

   RETURN

' ------------------------------------------------------------------------------

   SaisieMatiereSeche:

      N%=NUMBER_CHANGE
      a$=RIGHT$(TEXT$(N%),1)
      IF a$="" THEN Saisie$="0" : TEXT N%, Saisie$: MS(N%-15) = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(N%))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(n%),L%-1),".")<>0 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF a$="." or a$="," THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) + "." : CARET_POSITION N%, L% : Saisie$ = text$(n%): MS(N%-15) = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF LEN(TEXT$(N%))=2 AND LEFT$(TEXT$(N%),1)="0" THEN Saisie$ = A$ : TEXT n%, Saisie$
      Saisie$=LEFT$(TEXT$(N%),5)
      TEXT N%, Saisie$
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%
      MS(N%-15) = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   SaisieIncorporation:

      N%=NUMBER_CHANGE
      a$=RIGHT$(TEXT$(N%),1)
      IF a$="" THEN Saisie$="0" : TEXT N%, Saisie$: IN(N%-24) = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(N%))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(n%),L%-1),".")<>0 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF a$="." or a$="," THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) + "." : CARET_POSITION N%, L% : Saisie$ = text$(n%): IN(N%-24) = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF LEN(TEXT$(N%))=2 AND LEFT$(TEXT$(N%),1)="0" THEN Saisie$ = A$ : TEXT n%, Saisie$
      Saisie$=LEFT$(TEXT$(N%),5)
      TEXT N%, Saisie$
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%
      IN(N%-24) = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   EffaceColonne:

      N% = NUMBER_CLICK

      IF N% = 2 THEN FOR i%=1 TO 8: PR$(i%)="": TEXT i%+6, PR$(i%): NEXT i%

      IF N% = 3
         FOR i% = 1 TO 8
            OFF_CHANGE i% + 15
            MS(i%) = 0
            TEXT i% + 15, MS(i%)
            ON_CHANGE i% + 15, SaisieMatiereSeche
         NEXT i%
      END_IF

      IF N% = 4
         FOR i% = 1 to 8
            OFF_CHANGE i% + 24
             IN(i%) = 0
             TEXT i% + 24, IN(i%)
             ON_CHANGE i% + 24, SaisieIncorporation
         NEXT i%
      END_IF
        
      CalculFeuille()
    
      Mise_en_Forme()

   RETURN

' ------------------------------------------------------------------------------

   ToucheEntree:
  
      IF KEY_DOWN_CODE = 13
         N% = NUMBER_CLICK
         INACTIVE N% : ACTIVE N%
         Mise_en_Forme()
      END_IF
  
   RETURN

' ------------------------------------------------------------------------------

   SUB CalculFeuille()

      TotalIncorpo = 0
  
      FOR i% = 1 TO 8
         TotalIncorpo = TotalIncorpo + IN(i%)
      NEXT i%

      IF TotalIncorpo = 100 THEN A$ = "  " + STR$(TotalIncorpo) + " %"
      IF TotalIncorpo < 100 THEN TotalIncorpo = 100 - TotalIncorpo : A$ = "Manque " + STR$(TotalIncorpo) + " %"
      IF TotalIncorpo > 100 THEN TotalIncorpo = TotalIncorpo -100 : A$ = "De trop " + STR$(TotalIncorpo) + " %"
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int(((180 - LongueurTexte% )/Espace%)/2)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$
      CAPTION 44, A$

      FOR i% = 1 TO 8
         IF TotalIncorpo = 100 AND MS(i%)>0
            PoidsReel(i%)=INT((860000*(IN(i%)/MS(i%))/(1000 + (Dilution * 1000)))+0.5)
         ELSE
            PoidsReel(i%)=0
         END_IF
      NEXT i%

      FOR i% = 1 TO 8
         A$ = STR$(PoidsReel(i%))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int(((170 - LongueurTexte% - 65) + 0.5) / Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " g"
         IF PoidsReel(i%) = 0
            TEXT i%+33, "         - - -"
         ELSE
            TEXT i%+33, A$
         END_IF
      NEXT i%

      L% = 0
      FOR i% = 1 TO 8
      L% = L% + PoidsReel(i%)
      NEXT i%
  
      PoidsReel(0)= 1000-L%
      IF PoidsReel(0) < 0
         COLOR 33, 254,100,100
         ELSE
         COLOR 33, 255,255,255
      END_IF
  
      A$ = STR$(PoidsReel(0))
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int((170 - LongueurTexte% - 65) / Espace%)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " g"

      TEXT 33, A$

   END_SUB

' ------------------------------------------------------------------------------

   DeplacementFenetre:

      FONT_COLOR 1, 250,100,100

      Off_DOUBLE_CLICK 1

      X2% = MOUSE_X_POSITION(1)
      Y2% = MOUSE_Y_POSITION(1)

      REPEAT
         X1% = MOUSE_X_POSITION(1)
         Y1% = MOUSE_Y_POSITION(1)
         x% = x% + X1% - x2% : LEFT 0, x%
         y% = y% + y1% - y2% : TOP 0, y%
      UNTIL SCANCODE = 2 or SCANCODE = 27 OR SCANCODE = 13

      FONT_COLOR 1, 0,0,0

      ON_DOUBLE_CLICK 1, DeplacementFenetre

   RETURN

' ------------------------------------------------------------------------------

   SUB Ecriture_fichier()

      FILE_OPEN_WRITE 1, "Formule.dat"

      FOR i% = 0 to 8
         FILE_WRITELN 1, PR$(i%)
         FILE_WRITELN 1, MS(i%)
         FILE_WRITELN 1, IN(i%)
      NEXT i%

      FILE_WRITELN 1, Dilution
      FILE_WRITELN 1, x%
      FILE_WRITELN 1, y%
      FILE_CLOSE 1

   END_SUB

' ------------------------------------------------------------------------------
   Quitter:

      Ecriture_fichier()

   TERMINATE


Cette calculatrice permet de quantifier les produits à mélanger pour obtenir 1 kilo d'aliment en fonction de la matière sèche et du pourcentage d'incorporation de chaque produit.

Ergonomie :
Elle est dessinée pour pouvoir être facilement utilisée sur une tablette ou un téléphone portable... Vivement la version non limitée de Panoramic pour Android !

Particularités :
  - Les données sont gardées en mémoire.

  - La fenêtre est repositionnable :
           Un double clic gauche sur le titre permet d'ancrer la souris au titre.
           Déplacez la souris à l’endroit souhaité.
           Clique droit, ESC ou ENTER pour détacher la fenêtre.
    => La nouvelle position reste en mémoire : au prochain lancement du programme,
          la fenêtre sera à endroit où vous l'aviez laissée.

  - Un clic sur le titre d'une colonne permet d'en effacer le contenu.

  - Toutes les cellules sont formatées. Je vous laisse découvrir.

Bugs :
- Très rarement, au lancement, la fenêtre est tronquée sur sa partie droite :



- Scan_code "se bloque" et renvoie une valeur fixe : par exemple 117 quelle que soit la touche enfoncée. (Merci au Forum qui m'a donné la seule solution : éteindre l'ordinateur et redémarrer).

- Très rarement aussi, désordre dans la gestion des objets qui peut altérer le fichier de sauvegarde. Solution : fermer l'application, effacer le fichier "formule.dat" et re-lancer l'application. un nouveau fichier vierge sera créé.

- Beep lors de la fermeture du programme. Bug connu depuis longtemps.

- Pas vraiment un bug : Beep quand je valide un champ.


Merci pour vos remarques.

Bonne fin de weekend,

Marc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 457
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Calculatrice spéciale   Lun 14 Sep 2015 - 6:02

Je viens d'ajouter un bouton IMPRIMER  nommé "PRINT".

Il crée un fichier texte "Formule.txt" et ouvre notepad.exe
configuré au préalable en police "COURRIER NEW"

Code:
  ' ------ Calculatrice formule soupe v2.0 ------

   DIM Dilution
   DIM Saisie$
   DIM L%
   DIM A$
   DIM N%
   DIM B
   DIM i%
   DIM x%
   DIM x1%
   DIM X2%
   DIM y%
   DIM Y1%
   DIM y2%
   DIM TotalIncorpo
   DIM Pr$(9)
   DIM MS(9)
   DIM In(9)
   DIM PoidsReel(8)
   DIM Espace%
   DIM NbEspaces%
   DIM LongueurTexte%
   DIM Objet_Clique%

   Pr$(0)="Eau"

   LABEL Quitter
   LABEL SaisieDilution
   LABEL SaisieProduit
   LABEL SaisieMatiereSeche
   LABEL SaisieIncorporation
   LABEL EffaceColonne
   LABEL Selection_Champ_Numerique
   LABEL ToucheEntree
   LABEL DeplacementFenetre
   LABEL Selection_Champ_Texte
   LABEL Impression

   IF FILE_EXISTS("Formule.dat")=0
      x% = 0
      y% = 0
      Ecriture_fichier()
   END_IF

   FILE_OPEN_READ 1, "Formule.dat"

      FOR i% = 0 to 8
         FILE_READLN 1, PR$(i%)
         FILE_READLN 1, MS(i%)
         FILE_READLN 1, IN(i%)
      NEXT i%

      FILE_READLN 1, Dilution
      FILE_READLN 1, x%
      FILE_READLN 1, y%

   FILE_CLOSE 1

   border_hide 0
      LEFT 0, x%
      TOP 0, y%
      width 0, 720
      height 0, 480
      color 0, 200,230,255
      Font_name 0, "Arial"
      FONT_SIZE 0,18

   ALPHA 1
      TOP 1, 10
      LEFT 1, 40
      caption 1, "C A L C U L A T R I C E   F O R M U L E   S O U P E   v 2.0 "
      ON_DOUBLE_CLICK 1, DeplacementFenetre

   BUTTON 2
      LEFT 2,19
      TOP 2, 44
      WIDTH 2, 172
      HEIGHT 2, 38
      CAPTION 2, "Produits"
      ON_CLICK 2, EffaceColonne

   BUTTON 3
      LEFT 3, 189
      TOP 3, 44
      WIDTH 3, 172
      HEIGHT 3, 38
      CAPTION 3, "% Mat. Sèche"
      ON_CLICK 3, EffaceColonne

   BUTTON 4
      LEFT 4, 359
      TOP 4, 44
      WIDTH 4, 172
      HEIGHT 4, 38
      CAPTION 4, "% incorpo."
      ON_CLICK 4, EffaceColonne

   BUTTON 5
      LEFT 5, 529
      TOP 5, 44
      WIDTH 5, 172
      HEIGHT 5, 38
      CAPTION 5, "Poids réel"

rem Colonne 1 PRODUITS

   EDIT 6
      LEFT 6, 20
      TOP 6, 81
      WIDTH 6, 170
      HEIGHT 6, 36
      TEXT 6, " Eau"
      INACTIVE 6

   EDIT 7
      LEFT 7, 20
      TOP 7, 117
      WIDTH 7, 170
      HEIGHT 7, 36

   EDIT 8
      LEFT 8, 20
      TOP 8, 153
      WIDTH 8, 170
      HEIGHT 8, 36

   EDIT 9
      LEFT 9, 20
      TOP 9, 189
      WIDTH 9, 170
      HEIGHT 9, 36

   EDIT 10
      LEFT 10, 20
      TOP 10, 225
      WIDTH 10, 170
      HEIGHT 10, 36

   EDIT 11
      LEFT 11, 20
      TOP 11, 261
      WIDTH 11, 170
      HEIGHT 11, 36

   EDIT 12
      LEFT 12, 20
      TOP 12, 297
      WIDTH 12, 170
      HEIGHT 12, 36

   EDIT 13
      LEFT 13, 20
      TOP 13, 333
      WIDTH 13, 170
      HEIGHT 13, 36

   EDIT 14
      LEFT 14, 20
      TOP 14, 369
      WIDTH 14, 170
      HEIGHT 14, 36

 rem Colonne 2 % M.S.

   EDIT 15
      LEFT 15, 190
      TOP 15, 81
      WIDTH 15, 170
      HEIGHT 15, 36
      INACTIVE 15

   EDIT 16
      LEFT 16, 190
      TOP 16, 117
      WIDTH 16, 170
      HEIGHT 16, 36

   EDIT 17
      LEFT 17, 190
      TOP 17, 153
      WIDTH 17, 170
      HEIGHT 17, 36

   EDIT 18
      LEFT 18, 190
      TOP 18, 189
      WIDTH 18, 170
      HEIGHT 18, 36

   EDIT 19
      LEFT 19, 190
      TOP 19, 225
      WIDTH 19, 170
      HEIGHT 19, 36

   EDIT 20
      LEFT 20, 190
      TOP 20, 261
      WIDTH 20, 170
      HEIGHT 20, 36

   EDIT 21
      LEFT 21, 190
      TOP 21, 297
      WIDTH 21, 170
      HEIGHT 21, 36

   EDIT 22
      LEFT 22, 190
      TOP 22, 333
      WIDTH 22, 170
      HEIGHT 22, 36

   EDIT 23
      LEFT 23, 190
      TOP 23, 369
      WIDTH 23, 170
      HEIGHT 23, 36

 rem Colonne 3 % incorpo.

   EDIT 24
      LEFT 24, 360
      TOP 24, 81
      WIDTH 24, 170
      HEIGHT 24, 36
      INACTIVE 24

   EDIT 25
      LEFT 25, 360
      TOP 25, 117
      WIDTH 25, 170
      HEIGHT 25, 36

   EDIT 26
      LEFT 26, 360
      TOP 26, 153
      WIDTH 26, 170
      HEIGHT 26, 36

   EDIT 27
      LEFT 27, 360
      TOP 27, 189
      WIDTH 27, 170
      HEIGHT 27, 36

   EDIT 28
      LEFT 28, 360
      TOP 28, 225
      WIDTH 28, 170
      HEIGHT 28, 36

   EDIT 29
      LEFT 29, 360
      TOP 29, 261
      WIDTH 29, 170
      HEIGHT 29, 36

   EDIT 30
      LEFT 30, 360
      TOP 30, 297
      WIDTH 30, 170
      HEIGHT 30, 36

   EDIT 31
      LEFT 31, 360
      TOP 31, 333
      WIDTH 31, 170
      HEIGHT 31, 36

   EDIT 32
      LEFT 32, 360
      TOP 32, 369
      WIDTH 32, 170
      HEIGHT 32, 36

rem Colonne 4 POIDS REEL

   EDIT 33
      LEFT 33, 530
      TOP 33, 81
      WIDTH 33, 170
      HEIGHT 33, 36

   EDIT 34
      LEFT 34, 530
      TOP 34, 117
      WIDTH 34, 170
      HEIGHT 34, 36

   EDIT 35
      LEFT 35, 530
      TOP 35, 153
      WIDTH 35, 170
      HEIGHT 35, 36

   EDIT 36
      LEFT 36, 530
      TOP 36, 189
      WIDTH 36, 170
      HEIGHT 36, 36

   EDIT 37
      LEFT 37, 530
      TOP 37, 225
      WIDTH 37, 170
      HEIGHT 37, 36

   EDIT 38
      LEFT 38, 530
      TOP 38, 261
      WIDTH 38, 170
      HEIGHT 38, 36

   EDIT 39
      LEFT 39, 530
      TOP 39, 297
      WIDTH 39, 170
      HEIGHT 39, 36

   EDIT 40
      LEFT 40, 530
      TOP 40, 333
      WIDTH 40, 170
      HEIGHT 40, 36

   EDIT 41
      LEFT 41, 530
      TOP 41, 369
      WIDTH 41, 170
      HEIGHT 41, 36

   FOR i% = 33 TO 41
      INACTIVE i%
   NEXT i%

REM DERNIERE LIGNE
      
   BUTTON 42
      LEFT 42, 19
      TOP 42, 422
      WIDTH 42, 172
      HEIGHT 42, 38
      CAPTION 42, "Dilution :"

   EDIT 43
      LEFT 43, 190
      TOP 43, 423
      WIDTH 43, 65
      HEIGHT 43, 36
      TEXT 43, Dilution
      ON_CHANGE 43, SaisieDilution
      ON_CLICK 43, Selection_Champ_Numerique
      ON_KEY_DOWN 43, ToucheEntree

   ALPHA 44
      LEFT 44, 360
      TOP 44, 426
      WIDTH 44, 180
      HEIGHT 44, 36

   BUTTON 45
      LEFT 45, 601
      TOP 45, 422
      WIDTH 45, 100
      HEIGHT 45, 38
      CAPTION 45, "Quitter"
      ON_CLICK 45, Quitter

   BUTTON 46
      LEFT 46, 276
      TOP 46, 422
      WIDTH 46, 85
      HEIGHT 46, 38
      CAPTION 46, "Print"
      ON_CLICK 46, Impression

   Espace% = text_width(" ",1) : ' Calcul longueur d'un espace texte

   FOR i% = 1 TO 8
      TEXT i%+6, PR$(i%)
   NEXT i%
  
   FOR i% = 1 to 8
      TEXT i%+15, MS(i%)
      TEXT i%+24, IN(i%)
   NEXT i%

   FOR i% = 1 TO 8
      ON_CHANGE i% + 6, SaisieProduit
      ON_CLICK i% +6, Selection_Champ_Texte
      ON_KEY_DOWN i% + 6, ToucheEntree
      ON_CHANGE i% + 15, SaisieMatiereSeche
      ON_CLICK i% +15, Selection_Champ_Numerique
      ON_KEY_DOWN i% + 15, ToucheEntree
      ON_CHANGE i% + 24, SaisieIncorporation
      ON_CLICK i% + 24, Selection_Champ_Numerique
      ON_KEY_DOWN i% + 24, ToucheEntree
   NEXT i%

   CalculFeuille()

   Mise_en_Forme()

   END

' ------------------------------------------------------------------------------

   Selection_Champ_Numerique:
  
      Objet_Clique% = NUMBER_CLICK

      Mise_en_Forme()

      LongueurTexte% = LEN(TEXT$(Objet_Clique%))

      IF LongueurTexte% > 2 AND Objet_Clique% < 33
         A$ = LEFT$(TEXT$(Objet_Clique%),LongueurTexte% - 1)
         ELSE
         A$ = TEXT$(Objet_Clique%)
      END_IF
      
      B = VAL(A$)
      TEXT Objet_Clique%, B
  
   RETURN

' ------------------------------------------------------------------------------

   Selection_Champ_Texte:

     Mise_en_Forme()

   RETURN

' ------------------------------------------------------------------------------

   SUB Mise_en_Forme()

      FOR i% = 7 to 14
         OFF_CHANGE i%
         A$ = PR$(i%-6)
         IF LEFT$(A$,1) <> " " THEN A$ = " " + A$
         TEXT i%, A$
         ON_CHANGE i%, SaisieProduit
      NEXT i%

      FOR i% = 16 to 23
         OFF_CHANGE i%
         A$ = STR$(MS(i%-15))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int((170 - LongueurTexte% - 70)/ Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " %"
         TEXT i%, A$
         ON_CHANGE i%, SaisieMatiereSeche
      NEXT i%

      FOR i% = 25 to 32
         OFF_CHANGE i%
         A$ = STR$(IN(i%-24))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int((170 - LongueurTexte% - 70)/ Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " %"
         TEXT i%, A$
         ON_CHANGE i%, SaisieIncorporation
      NEXT i%

      OFF_CHANGE 43
      A$ = STR$(Dilution)
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int(((70 - LongueurTexte%)/Espace%)/2)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$
      TEXT 43, A$
      ON_CHANGE 43, SaisieDilution

   END_SUB

' ------------------------------------------------------------------------------

   SaisieDilution:

      a$=RIGHT$(TEXT$(43),1)
      IF a$="" THEN Saisie$="0" : TEXT 43, Saisie$: Dilution = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(43))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(43),L%-1),".")<>0 THEN TEXT 43, LEFT$(TEXT$(43),L%-1) : CARET_POSITION 43, L% : RETURN
      IF a$="." or a$="," THEN TEXT 43, LEFT$(TEXT$(43),L%-1) + "." : CARET_POSITION 43, L% : Saisie$ = text$(43): Dilution = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT 43, LEFT$(TEXT$(43),L%-1) : CARET_POSITION 43, L% : RETURN
      IF LEN(TEXT$(43))=2 AND LEFT$(TEXT$(43),1)="0" THEN Saisie$ = A$ : TEXT 43, Saisie$
      Saisie$=LEFT$(TEXT$(43),4)
      TEXT 43, Saisie$
      L%=LEN(TEXT$(43)):CARET_POSITION 43, L%
      Dilution = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   SaisieProduit:

      N%=number_change
      PR$(N%-6)=LEFT$(TEXT$(N%),11)
      TEXT N%, PR$(N%-6)
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%

   RETURN

' ------------------------------------------------------------------------------

   SaisieMatiereSeche:

      N%=NUMBER_CHANGE
      a$=RIGHT$(TEXT$(N%),1)
      IF a$="" THEN Saisie$="0" : TEXT N%, Saisie$: MS(N%-15) = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(N%))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(n%),L%-1),".")<>0 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF a$="." or a$="," THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) + "." : CARET_POSITION N%, L% : Saisie$ = text$(n%): MS(N%-15) = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF LEN(TEXT$(N%))=2 AND LEFT$(TEXT$(N%),1)="0" THEN Saisie$ = A$ : TEXT n%, Saisie$
      Saisie$=LEFT$(TEXT$(N%),5)
      TEXT N%, Saisie$
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%
      MS(N%-15) = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   SaisieIncorporation:

      N%=NUMBER_CHANGE
      a$=RIGHT$(TEXT$(N%),1)
      IF a$="" THEN Saisie$="0" : TEXT N%, Saisie$: IN(N%-24) = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(N%))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(n%),L%-1),".")<>0 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF a$="." or a$="," THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) + "." : CARET_POSITION N%, L% : Saisie$ = text$(n%): IN(N%-24) = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF LEN(TEXT$(N%))=2 AND LEFT$(TEXT$(N%),1)="0" THEN Saisie$ = A$ : TEXT n%, Saisie$
      Saisie$=LEFT$(TEXT$(N%),5)
      TEXT N%, Saisie$
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%
      IN(N%-24) = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   EffaceColonne:

      N% = NUMBER_CLICK

      IF N% = 2 THEN FOR i%=1 TO 8: PR$(i%)="": TEXT i%+6, PR$(i%): NEXT i%

      IF N% = 3
         FOR i% = 1 TO 8
            OFF_CHANGE i% + 15
            MS(i%) = 0
            TEXT i% + 15, MS(i%)
            ON_CHANGE i% + 15, SaisieMatiereSeche
         NEXT i%
      END_IF

      IF N% = 4
         FOR i% = 1 to 8
            OFF_CHANGE i% + 24
             IN(i%) = 0
             TEXT i% + 24, IN(i%)
             ON_CHANGE i% + 24, SaisieIncorporation
         NEXT i%
      END_IF
        
      CalculFeuille()
    
      Mise_en_Forme()

   RETURN

' ------------------------------------------------------------------------------

   ToucheEntree:
  
      IF KEY_DOWN_CODE = 13
         N% = NUMBER_CLICK
         INACTIVE N% : ACTIVE N%
         Mise_en_Forme()
      END_IF
  
   RETURN

' ------------------------------------------------------------------------------

   SUB CalculFeuille()

      TotalIncorpo = 0
  
      FOR i% = 1 TO 8
         TotalIncorpo = TotalIncorpo + IN(i%)
      NEXT i%

      IF TotalIncorpo = 100 THEN A$ = "  " + STR$(TotalIncorpo) + " %"
      IF TotalIncorpo < 100 THEN TotalIncorpo = 100 - TotalIncorpo : A$ = "Manque " + STR$(TotalIncorpo) + " %"
      IF TotalIncorpo > 100 THEN TotalIncorpo = TotalIncorpo -100 : A$ = "De trop " + STR$(TotalIncorpo) + " %"
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int(((180 - LongueurTexte% )/Espace%)/2)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$
      CAPTION 44, A$

      FOR i% = 1 TO 8
         IF TotalIncorpo = 100 AND MS(i%)>0
            PoidsReel(i%)=INT((860000*(IN(i%)/MS(i%))/(1000 + (Dilution * 1000)))+0.5)
         ELSE
            PoidsReel(i%)=0
         END_IF
      NEXT i%

      FOR i% = 1 TO 8
         A$ = STR$(PoidsReel(i%))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int(((170 - LongueurTexte% - 65) + 0.5) / Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " g"
         IF PoidsReel(i%) = 0
            TEXT i%+33, "         - - -"
         ELSE
            TEXT i%+33, A$
         END_IF
      NEXT i%

      L% = 0
      FOR i% = 1 TO 8
      L% = L% + PoidsReel(i%)
      NEXT i%
  
      PoidsReel(0)= 1000-L%
      IF PoidsReel(0) < 0
         COLOR 33, 254,100,100
         ELSE
         COLOR 33, 255,255,255
      END_IF
  
      A$ = STR$(PoidsReel(0))
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int((170 - LongueurTexte% - 65) / Espace%)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " g"

      TEXT 33, A$

   END_SUB

' ------------------------------------------------------------------------------

   DeplacementFenetre:

      FONT_COLOR 1, 250,100,100

      Off_DOUBLE_CLICK 1

      X2% = MOUSE_X_POSITION(1)
      Y2% = MOUSE_Y_POSITION(1)

      REPEAT
         X1% = MOUSE_X_POSITION(1)
         Y1% = MOUSE_Y_POSITION(1)
         x% = x% + X1% - x2% : LEFT 0, x%
         y% = y% + y1% - y2% : TOP 0, y%
      UNTIL SCANCODE = 2 or SCANCODE = 27 OR SCANCODE = 13

      FONT_COLOR 1, 0,0,0

      ON_DOUBLE_CLICK 1, DeplacementFenetre

   RETURN

' ------------------------------------------------------------------------------

   SUB Ecriture_fichier()

      FILE_OPEN_WRITE 1, "Formule.dat"

      FOR i% = 0 to 8
         FILE_WRITELN 1, PR$(i%)
         FILE_WRITELN 1, MS(i%)
         FILE_WRITELN 1, IN(i%)
      NEXT i%

      FILE_WRITELN 1, Dilution
      FILE_WRITELN 1, x%
      FILE_WRITELN 1, y%
      FILE_CLOSE 1

   END_SUB

' ------------------------------------------------------------------------------

   Impression:
  
      Imprimer()
      
   RETURN

' ------------------------------------------------------------------------------

   SUB Imprimer()
  
      DIM_LOCAL Imp$(8,4)

      FOR i% = 0 to 8
         L% = LEN(PR$(i%))
         IMP$(i%,0) = "   " + PR$(i%) + STRING$(15-L%," ")
         A$ = STR$(MS(i%))
         L% = LEN(A$)
         IMP$(i%,1) = STRING$(10-L%," ") + A$ +" %"
         A$ = STR$(IN(i%))
         L% = LEN(A$)
         IMP$(i%,2) = STRING$(10-L%," ") + A$ +" %"
         A$ = STR$(PoidsReel(i%))
         L% = LEN(A$)
         IMP$(i%,3) = STRING$(10-L%," ") + A$ +" g"
         IMP$(i%,4) = IMP$(i%,0)+IMP$(i%,1)+IMP$(i%,2)+IMP$(i%,3)
      NEXT i%
      
      FILE_OPEN_WRITE 2, "Formule.txt"

         FILE_WRITELN 2, "   " + DATE$ + " " + TIME$
         FILE_WRITELN 2, ""
         FILE_WRITELN 2, "   PRODUIT           MAT.SECHE     INCORPO    POIDS REEL"
         FILE_WRITELN 2, ""

         FOR i% = 0 to 8
            FILE_WRITELN 2, IMP$(i%,4)
            FILE_WRITELN 2, ""
         NEXT i%

         A$ = STR$(Dilution)
         FILE_WRITELN 2, "   Dilution : " + A$

      FILE_CLOSE 2

      EXECUTE "notepad.exe d:\Panoramic\Formule.txt"

   END_SUB

' ------------------------------------------------------------------------------
   Quitter:

      Ecriture_fichier()

   TERMINATE




Bonne nuit !


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5040
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Calculatrice spéciale   Lun 14 Sep 2015 - 10:13

Bonjour Marc
Je viens de tester.
1) il faut, au préalable, enregistrer le code dans un dossier, sinon çà ne marche pas.
2) J'ai eu le bug (plusieurs fois), celui que tu as signalé plus haut, la partie droite de FORM 0 est tronquée.


Sinon, j'ai rempli les cases à l'aveuglette, vu que je ne comprend pas le programme.
J'ai regardé la déclaration des objets: je ne vois pas d'erreur.
A part que je trouve curieux TOP 0,y% et pareil pour LEFT 0,x% pourquoi pas une valeur fixe ?

Je ne peux pas en dire beaucoup plus, on est dans un domaine particulier.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 457
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Calculatrice spéciale   Lun 14 Sep 2015 - 11:08

Bonjour Jean-Claude,

Merci d'avoir fait le test.

Citation :
TOP 0,y% et pareil pour LEFT 0,x% pourquoi pas une valeur fixe ?

=> Ce sont des variables et non des constantes : la fenêtre est repositionnable :
          Un double clic gauche sur le titre permet d'ancrer la souris au titre.
          Déplace la souris à l’endroit souhaité.
          Clique droit, ESC ou ENTER pour détacher la fenêtre.
          La nouvelle position reste en mémoire : au prochain lancement du programme,
          la fenêtre sera à endroit où tu l'avais laissée. Ces deux variables sont mémorisées
          dans le fichier "formule.dat" qui est créé.

Pour le FORM 0 qui est parfois tronqué, j'ai essayé d'ajouter DISPLAY à différents endroits mais rien n' y fait. De plus, ce matin, j'ai essayé entre 10 et 20 fois de lancer le programme : pas de problème !

Quant au fonctionnement du programme, il faut que la somme de la colonne %incorporation soit égale à 100 pour pouvoir déclencher le calcul des quantités. Tu as l'exemple sur la première photo.

Bonne programmation !

Marc
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5040
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Calculatrice spéciale   Lun 14 Sep 2015 - 11:34

OK pour le déplacement de la fenêtre, je n'avais pas remarqué.

Citation :
Pour le FORM 0 qui est parfois tronqué, j'ai essayé d'ajouter DISPLAY à différents endroits mais rien n' y fait. De plus, ce matin, j'ai essayé entre 10 et 20 fois de lancer le programme : pas de problème !

J'ai remarqué que tu déclares WIDTH et HEIGHT pour FORM 0 après BORDER_HIDE. Personnellement je commence toujours par donner les dimensions d'un objet avant tout autres commandes, çà me parait plus logique.
Néanmoins je ne pense pas que le bug vienne de ça.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 457
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Calculatrice spéciale   Mer 16 Sep 2015 - 10:27

Bonjour à tous,
J’ai remanié la structure de mon programme pour plus de lisibilité, du moins je l’espère.
J’ai suivi les conseils de Jean-Claude en plaçant le WIDTH et HEIGHT du FORM 0 avant BORDER_HIDE pour tenter d’éradiquer le bug à l’affichage du FORM 0. Pour l’instant je ne l’ai pas re-constaté.

Code:
   ' ------ Calculatrice formule soupe v2.0 ------

   Declarations()

   Lecture_Fichier()
  
   Affichage_Masque()

   Espace% = text_width(" ",1) : ' Calcul longueur d'un espace texte

   Affichage_donnees()

   Evenements()

   CalculFeuille()

   Mise_en_Forme()

   END

' ------------------------------------------------------------------------------

   SUB Evenements()
  
      ON_DOUBLE_CLICK 1, DeplacementFenetre
      ON_CLICK 2, EffaceColonne
      ON_CLICK 3, EffaceColonne
      ON_CLICK 4, EffaceColonne
      ON_CHANGE 43, SaisieDilution
      ON_CLICK 43, Selection_Champ_Numerique
      ON_KEY_DOWN 43, ToucheEntree
      ON_CLICK 45, Quitter
      ON_CLICK 46, Impression

      FOR i% = 1 TO 8
         ON_CHANGE i% + 6, SaisieProduit
         ON_CLICK i% +6, Selection_Champ_Texte
         ON_KEY_DOWN i% + 6, ToucheEntree
         ON_CHANGE i% + 15, SaisieMatiereSeche
         ON_CLICK i% +15, Selection_Champ_Numerique
         ON_KEY_DOWN i% + 15, ToucheEntree
         ON_CHANGE i% + 24, SaisieIncorporation
         ON_CLICK i% + 24, Selection_Champ_Numerique
         ON_KEY_DOWN i% + 24, ToucheEntree
      NEXT i%

   END_SUB
  
' ------------------------------------------------------------------------------

   Selection_Champ_Numerique:
  
      Objet_Clique% = NUMBER_CLICK

      Mise_en_Forme()

      LongueurTexte% = LEN(TEXT$(Objet_Clique%))

      IF LongueurTexte% > 2 AND Objet_Clique% < 33
         A$ = LEFT$(TEXT$(Objet_Clique%),LongueurTexte% - 1)
         ELSE
         A$ = TEXT$(Objet_Clique%)
      END_IF
      
      B = VAL(A$)
      TEXT Objet_Clique%, B
  
   RETURN

' ------------------------------------------------------------------------------

   Selection_Champ_Texte:

     Mise_en_Forme()

   RETURN

' ------------------------------------------------------------------------------

   SUB Mise_en_Forme()

      FOR i% = 7 to 14
         OFF_CHANGE i%
         A$ = PR$(i%-6)
         IF LEFT$(A$,1) <> " " THEN A$ = " " + A$
         TEXT i%, A$
         ON_CHANGE i%, SaisieProduit
      NEXT i%

      FOR i% = 16 to 23
         OFF_CHANGE i%
         A$ = STR$(MS(i%-15))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int((170 - LongueurTexte% - 70)/ Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " %"
         TEXT i%, A$
         ON_CHANGE i%, SaisieMatiereSeche
      NEXT i%

      FOR i% = 25 to 32
         OFF_CHANGE i%
         A$ = STR$(IN(i%-24))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int((170 - LongueurTexte% - 70)/ Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " %"
         TEXT i%, A$
         ON_CHANGE i%, SaisieIncorporation
      NEXT i%

      OFF_CHANGE 43
      A$ = STR$(Dilution)
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int(((70 - LongueurTexte%)/Espace%)/2)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$
      TEXT 43, A$
      ON_CHANGE 43, SaisieDilution

   END_SUB

' ------------------------------------------------------------------------------

   SaisieDilution:

      a$=RIGHT$(TEXT$(43),1)
      IF a$="" THEN Saisie$="0" : TEXT 43, Saisie$: Dilution = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(43))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(43),L%-1),".")<>0 THEN TEXT 43, LEFT$(TEXT$(43),L%-1) : CARET_POSITION 43, L% : RETURN
      IF a$="." or a$="," THEN TEXT 43, LEFT$(TEXT$(43),L%-1) + "." : CARET_POSITION 43, L% : Saisie$ = text$(43): Dilution = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT 43, LEFT$(TEXT$(43),L%-1) : CARET_POSITION 43, L% : RETURN
      IF LEN(TEXT$(43))=2 AND LEFT$(TEXT$(43),1)="0" THEN Saisie$ = A$ : TEXT 43, Saisie$
      Saisie$=LEFT$(TEXT$(43),4)
      TEXT 43, Saisie$
      L%=LEN(TEXT$(43)):CARET_POSITION 43, L%
      Dilution = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   SaisieProduit:

      N%=number_change
      PR$(N%-6)=LEFT$(TEXT$(N%),11)
      TEXT N%, PR$(N%-6)
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%

   RETURN

' ------------------------------------------------------------------------------

   SaisieMatiereSeche:

      N%=NUMBER_CHANGE
      a$=RIGHT$(TEXT$(N%),1)
      IF a$="" THEN Saisie$="0" : TEXT N%, Saisie$: MS(N%-15) = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(N%))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(n%),L%-1),".")<>0 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF a$="." or a$="," THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) + "." : CARET_POSITION N%, L% : Saisie$ = text$(n%): MS(N%-15) = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF LEN(TEXT$(N%))=2 AND LEFT$(TEXT$(N%),1)="0" THEN Saisie$ = A$ : TEXT n%, Saisie$
      Saisie$=LEFT$(TEXT$(N%),5)
      TEXT N%, Saisie$
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%
      MS(N%-15) = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   SaisieIncorporation:

      N%=NUMBER_CHANGE
      a$=RIGHT$(TEXT$(N%),1)
      IF a$="" THEN Saisie$="0" : TEXT N%, Saisie$: IN(N%-24) = val(Saisie$) : CalculFeuille() : RETURN
      L%=LEN(TEXT$(N%))
      IF A$ = "." OR A$ = "," and INSTR(LEFT$(TEXT$(n%),L%-1),".")<>0 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF a$="." or a$="," THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) + "." : CARET_POSITION N%, L% : Saisie$ = text$(n%): IN(N%-24) = val(Saisie$): CalculFeuille() : RETURN
      IF ASC(a$)<48 or ASC(a$)>57 THEN TEXT N%, LEFT$(TEXT$(N%),L%-1) : CARET_POSITION N%, L% : RETURN
      IF LEN(TEXT$(N%))=2 AND LEFT$(TEXT$(N%),1)="0" THEN Saisie$ = A$ : TEXT n%, Saisie$
      Saisie$=LEFT$(TEXT$(N%),5)
      TEXT N%, Saisie$
      L%=LEN(TEXT$(N%)):CARET_POSITION N%, L%
      IN(N%-24) = val(Saisie$)
      CalculFeuille()

   RETURN

' ------------------------------------------------------------------------------

   EffaceColonne:

      N% = NUMBER_CLICK

      IF N% = 2 THEN FOR i%=1 TO 8: PR$(i%)="": TEXT i%+6, PR$(i%): NEXT i%

      IF N% = 3
         FOR i% = 1 TO 8
            OFF_CHANGE i% + 15
            MS(i%) = 0
            TEXT i% + 15, MS(i%)
            ON_CHANGE i% + 15, SaisieMatiereSeche
         NEXT i%
      END_IF

      IF N% = 4
         FOR i% = 1 to 8
            OFF_CHANGE i% + 24
             IN(i%) = 0
             TEXT i% + 24, IN(i%)
             ON_CHANGE i% + 24, SaisieIncorporation
         NEXT i%
      END_IF
        
      CalculFeuille()
    
      Mise_en_Forme()

   RETURN

' ------------------------------------------------------------------------------

   ToucheEntree:
  
      IF KEY_DOWN_CODE = 13
         N% = NUMBER_CLICK
         INACTIVE N% : ACTIVE N%
         Mise_en_Forme()
      END_IF
  
   RETURN

' ------------------------------------------------------------------------------

   SUB CalculFeuille()

      TotalIncorpo = 0
  
      FOR i% = 1 TO 8
         TotalIncorpo = TotalIncorpo + IN(i%)
      NEXT i%

      IF TotalIncorpo = 100 THEN A$ = "  " + STR$(TotalIncorpo) + " %"
      IF TotalIncorpo < 100 THEN TotalIncorpo = 100 - TotalIncorpo : A$ = "Manque " + STR$(TotalIncorpo) + " %"
      IF TotalIncorpo > 100 THEN TotalIncorpo = TotalIncorpo -100 : A$ = "De trop " + STR$(TotalIncorpo) + " %"
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int(((180 - LongueurTexte% )/Espace%)/2)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$
      CAPTION 44, A$

      FOR i% = 1 TO 8
         IF TotalIncorpo = 100 AND MS(i%)>0
            PoidsReel(i%)=INT((860000*(IN(i%)/MS(i%))/(1000 + (Dilution * 1000)))+0.5)
         ELSE
            PoidsReel(i%)=0
         END_IF
      NEXT i%

      FOR i% = 1 TO 8
         A$ = STR$(PoidsReel(i%))
         LongueurTexte% = text_width(A$,1)
         NbEspaces% = int(((170 - LongueurTexte% - 65) + 0.5) / Espace%)
         IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " g"
         IF PoidsReel(i%) = 0
            TEXT i%+33, "         - - -"
         ELSE
            TEXT i%+33, A$
         END_IF
      NEXT i%

      L% = 0
      FOR i% = 1 TO 8
         L% = L% + PoidsReel(i%)
      NEXT i%
  
      PoidsReel(0)= 1000-L%
      IF PoidsReel(0) < 0
         COLOR 33, 254,100,100
         ELSE
         COLOR 33, 255,255,255
      END_IF
  
      A$ = STR$(PoidsReel(0))
      LongueurTexte% = text_width(A$,1)
      NbEspaces% = int((170 - LongueurTexte% - 65) / Espace%)
      IF NbEspaces% > 0 then A$ = string$(NbEspaces%," ") + A$ + " g"

      TEXT 33, A$

   END_SUB

' ------------------------------------------------------------------------------

   DeplacementFenetre:

      FONT_COLOR 1, 250,100,100

      Off_DOUBLE_CLICK 1

      X2% = MOUSE_X_POSITION(1)
      Y2% = MOUSE_Y_POSITION(1)

      REPEAT
         X1% = MOUSE_X_POSITION(1)
         Y1% = MOUSE_Y_POSITION(1)
         x% = x% + X1% - x2% : LEFT 0, x%
         y% = y% + y1% - y2% : TOP 0, y%
      UNTIL SCANCODE = 2 or SCANCODE = 27 OR SCANCODE = 13

      FONT_COLOR 1, 0,0,0

      ON_DOUBLE_CLICK 1, DeplacementFenetre

   RETURN

' ------------------------------------------------------------------------------

   SUB Ecriture_fichier()

      FILE_OPEN_WRITE 1, "Formule.dat"

      FOR i% = 0 to 8
         FILE_WRITELN 1, PR$(i%)
         FILE_WRITELN 1, MS(i%)
         FILE_WRITELN 1, IN(i%)
      NEXT i%

      FILE_WRITELN 1, Dilution
      FILE_WRITELN 1, x%
      FILE_WRITELN 1, y%
      FILE_CLOSE 1

   END_SUB

' ------------------------------------------------------------------------------

   Impression:
  
      Imprimer()
      
   RETURN

' ------------------------------------------------------------------------------

   SUB Imprimer()
  
      DIM_LOCAL Imp$(8,4)

      FOR i% = 0 to 8
         L% = LEN(PR$(i%))
         IMP$(i%,0) = "   " + PR$(i%) + STRING$(15-L%," ")
         A$ = STR$(MS(i%))
         L% = LEN(A$)
         IMP$(i%,1) = STRING$(10-L%," ") + A$ +" %"
         A$ = STR$(IN(i%))
         L% = LEN(A$)
         IMP$(i%,2) = STRING$(10-L%," ") + A$ +" %"
         A$ = STR$(PoidsReel(i%))
         L% = LEN(A$)
         IMP$(i%,3) = STRING$(10-L%," ") + A$ +" g"
         IMP$(i%,4) = IMP$(i%,0)+IMP$(i%,1)+IMP$(i%,2)+IMP$(i%,3)
      NEXT i%
      
      FILE_OPEN_WRITE 2, "Formule.txt"

         FILE_WRITELN 2, "   " + DATE$ + " " + TIME$
         FILE_WRITELN 2, ""
         FILE_WRITELN 2, "   PRODUIT           MAT.SECHE     INCORPO    POIDS REEL"
         FILE_WRITELN 2, ""

         FOR i% = 0 to 8
            FILE_WRITELN 2, IMP$(i%,4)
            FILE_WRITELN 2, ""
         NEXT i%

         A$ = STR$(Dilution)
         FILE_WRITELN 2, "   Dilution : " + A$

      FILE_CLOSE 2

      EXECUTE "notepad.exe d:\Panoramic\Formule.txt"

   END_SUB

' ------------------------------------------------------------------------------

   SUB Declarations()
  
      DIM Dilution
      DIM Saisie$
      DIM L%
      DIM A$
      DIM N%
      DIM B
      DIM i%
      DIM x%
      DIM x1%
      DIM X2%
      DIM y%
      DIM Y1%
      DIM y2%
      DIM TotalIncorpo
      DIM Pr$(9)
      DIM MS(9)
      DIM In(9)
      DIM PoidsReel(8)
      DIM Espace%
      DIM NbEspaces%
      DIM LongueurTexte%
      DIM Objet_Clique%

      LABEL Quitter
      LABEL SaisieDilution
      LABEL SaisieProduit
      LABEL SaisieMatiereSeche
      LABEL SaisieIncorporation
      LABEL EffaceColonne
      LABEL Selection_Champ_Numerique
      LABEL ToucheEntree
      LABEL DeplacementFenetre
      LABEL Selection_Champ_Texte
      LABEL Impression

      Pr$(0)="Eau"

   END_SUB

' ------------------------------------------------------------------------------

   SUB Lecture_Fichier()

      IF FILE_EXISTS("Formule.dat")=0
         x% = 0
         y% = 0
         Ecriture_fichier()
      END_IF

      FILE_OPEN_READ 1, "Formule.dat"

         FOR i% = 0 to 8
            FILE_READLN 1, PR$(i%)
            FILE_READLN 1, MS(i%)
            FILE_READLN 1, IN(i%)
         NEXT i%

         FILE_READLN 1, Dilution
         FILE_READLN 1, x%
         FILE_READLN 1, y%

      FILE_CLOSE 1

   END_SUB
' ------------------------------------------------------------------------------

   SUB Affichage_Masque()

   width 0, 720
      height 0, 480
      LEFT 0, x%
      TOP 0, y%
      border_hide 0
      color 0, 200,230,255
      Font_name 0, "Arial"
      FONT_SIZE 0,18

   ALPHA 1
      TOP 1, 10
      LEFT 1, 40
      caption 1, "C A L C U L A T R I C E   F O R M U L E   S O U P E   v 2.0 "

   BUTTON 2
      LEFT 2,19
      TOP 2, 44
      WIDTH 2, 172
      HEIGHT 2, 38
      CAPTION 2, "Produits"

   BUTTON 3
      LEFT 3, 189
      TOP 3, 44
      WIDTH 3, 172
      HEIGHT 3, 38
      CAPTION 3, "% Mat. Sèche"

   BUTTON 4
      LEFT 4, 359
      TOP 4, 44
      WIDTH 4, 172
      HEIGHT 4, 38
      CAPTION 4, "% incorpo."

   BUTTON 5
      LEFT 5, 529
      TOP 5, 44
      WIDTH 5, 172
      HEIGHT 5, 38
      CAPTION 5, "Poids réel"

rem Colonne 1 PRODUITS

   EDIT 6
      LEFT 6, 20
      TOP 6, 81
      WIDTH 6, 170
      HEIGHT 6, 36
      TEXT 6, " Eau"

   EDIT 7
      LEFT 7, 20
      TOP 7, 117
      WIDTH 7, 170
      HEIGHT 7, 36

   EDIT 8
      LEFT 8, 20
      TOP 8, 153
      WIDTH 8, 170
      HEIGHT 8, 36

   EDIT 9
      LEFT 9, 20
      TOP 9, 189
      WIDTH 9, 170
      HEIGHT 9, 36

   EDIT 10
      LEFT 10, 20
      TOP 10, 225
      WIDTH 10, 170
      HEIGHT 10, 36

   EDIT 11
      LEFT 11, 20
      TOP 11, 261
      WIDTH 11, 170
      HEIGHT 11, 36

   EDIT 12
      LEFT 12, 20
      TOP 12, 297
      WIDTH 12, 170
      HEIGHT 12, 36

   EDIT 13
      LEFT 13, 20
      TOP 13, 333
      WIDTH 13, 170
      HEIGHT 13, 36

   EDIT 14
      LEFT 14, 20
      TOP 14, 369
      WIDTH 14, 170
      HEIGHT 14, 36

 rem Colonne 2 % M.S.

   EDIT 15
      LEFT 15, 190
      TOP 15, 81
      WIDTH 15, 170
      HEIGHT 15, 36

   EDIT 16
      LEFT 16, 190
      TOP 16, 117
      WIDTH 16, 170
      HEIGHT 16, 36

   EDIT 17
      LEFT 17, 190
      TOP 17, 153
      WIDTH 17, 170
      HEIGHT 17, 36

   EDIT 18
      LEFT 18, 190
      TOP 18, 189
      WIDTH 18, 170
      HEIGHT 18, 36

   EDIT 19
      LEFT 19, 190
      TOP 19, 225
      WIDTH 19, 170
      HEIGHT 19, 36

   EDIT 20
      LEFT 20, 190
      TOP 20, 261
      WIDTH 20, 170
      HEIGHT 20, 36

   EDIT 21
      LEFT 21, 190
      TOP 21, 297
      WIDTH 21, 170
      HEIGHT 21, 36

   EDIT 22
      LEFT 22, 190
      TOP 22, 333
      WIDTH 22, 170
      HEIGHT 22, 36

   EDIT 23
      LEFT 23, 190
      TOP 23, 369
      WIDTH 23, 170
      HEIGHT 23, 36

 rem Colonne 3 % incorpo.

   EDIT 24
      LEFT 24, 360
      TOP 24, 81
      WIDTH 24, 170
      HEIGHT 24, 36

   EDIT 25
      LEFT 25, 360
      TOP 25, 117
      WIDTH 25, 170
      HEIGHT 25, 36

   EDIT 26
      LEFT 26, 360
      TOP 26, 153
      WIDTH 26, 170
      HEIGHT 26, 36

   EDIT 27
      LEFT 27, 360
      TOP 27, 189
      WIDTH 27, 170
      HEIGHT 27, 36

   EDIT 28
      LEFT 28, 360
      TOP 28, 225
      WIDTH 28, 170
      HEIGHT 28, 36

   EDIT 29
      LEFT 29, 360
      TOP 29, 261
      WIDTH 29, 170
      HEIGHT 29, 36

   EDIT 30
      LEFT 30, 360
      TOP 30, 297
      WIDTH 30, 170
      HEIGHT 30, 36

   EDIT 31
      LEFT 31, 360
      TOP 31, 333
      WIDTH 31, 170
      HEIGHT 31, 36

   EDIT 32
      LEFT 32, 360
      TOP 32, 369
      WIDTH 32, 170
      HEIGHT 32, 36

rem Colonne 4 POIDS REEL

   EDIT 33
      LEFT 33, 530
      TOP 33, 81
      WIDTH 33, 170
      HEIGHT 33, 36

   EDIT 34
      LEFT 34, 530
      TOP 34, 117
      WIDTH 34, 170
      HEIGHT 34, 36

   EDIT 35
      LEFT 35, 530
      TOP 35, 153
      WIDTH 35, 170
      HEIGHT 35, 36

   EDIT 36
      LEFT 36, 530
      TOP 36, 189
      WIDTH 36, 170
      HEIGHT 36, 36

   EDIT 37
      LEFT 37, 530
      TOP 37, 225
      WIDTH 37, 170
      HEIGHT 37, 36

   EDIT 38
      LEFT 38, 530
      TOP 38, 261
      WIDTH 38, 170
      HEIGHT 38, 36

   EDIT 39
      LEFT 39, 530
      TOP 39, 297
      WIDTH 39, 170
      HEIGHT 39, 36

   EDIT 40
      LEFT 40, 530
      TOP 40, 333
      WIDTH 40, 170
      HEIGHT 40, 36

   EDIT 41
      LEFT 41, 530
      TOP 41, 369
      WIDTH 41, 170
      HEIGHT 41, 36

REM DERNIERE LIGNE

   BUTTON 42
      LEFT 42, 19
      TOP 42, 422
      WIDTH 42, 172
      HEIGHT 42, 38
      CAPTION 42, "Dilution :"

   EDIT 43
      LEFT 43, 190
      TOP 43, 423
      WIDTH 43, 65
      HEIGHT 43, 36
      TEXT 43, Dilution

   ALPHA 44
      LEFT 44, 360
      TOP 44, 426
      WIDTH 44, 180
      HEIGHT 44, 36

   BUTTON 45
      LEFT 45, 601
      TOP 45, 422
      WIDTH 45, 100
      HEIGHT 45, 38
      CAPTION 45, "Quitter"

   BUTTON 46
      LEFT 46, 276
      TOP 46, 422
      WIDTH 46, 85
      HEIGHT 46, 38
      CAPTION 46, "Print"

   INACTIVE 6
   INACTIVE 15
   INACTIVE 24

   FOR i% = 33 TO 41
      INACTIVE i%
   NEXT i%

   END_SUB

' ------------------------------------------------------------------------------

   SUB Affichage_donnees()

      FOR i% = 1 TO 8
         TEXT i%+6, PR$(i%)
      NEXT i%

      FOR i% = 1 to 8
         TEXT i%+15, MS(i%)
         TEXT i%+24, IN(i%)
      NEXT i%
      
   END_SUB

' ------------------------------------------------------------------------------
   Quitter:

      Ecriture_fichier()

   TERMINATE

La fonction "imprimer" me pose problème : le chemin est fixe pour que NOTEPAD trouve le fichier texte à imprimer. Dans mon cas, en ligne 382, c’est d:\Panoramic\Formule.txt".
Je ne trouve pas d’astuce pour avoir une détection automatique du répertoire d’installation.
Avez-vous une idée ?

Merci et bonne programmation !

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10075
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Calculatrice spéciale   Mer 16 Sep 2015 - 12:28

Ce n'est pas compliqué. A la création du fichier, tu mets le chemin suivant:
Code:
dim f$
f$ = param_value$(0)
f$ = file_extract_path$(f$)
f$ = f$ + "MonFichier.txt"
J'ai décomposé exprès en 3 lignes pour plus de clarté, mais tu peux simplifier...

Tu utilises alors ce nom de fichier pour le passer à NotePad, et éventuellement pour le supprimer.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Marc37



Nombre de messages : 457
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Calculatrice spéciale   Mer 16 Sep 2015 - 22:52

Merci Klaus !

Effectivement ce n'est pas compliqué.
Je passe à la pratique dès ce soir.

Bonne soirée !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Calculatrice spéciale   

Revenir en haut Aller en bas
 
Calculatrice spéciale
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Enigme spéciale WE du 1er mai...
» Razer dévoile une souris sans fil spéciale MMO
» Que faites vous pour le nouvel an ?
» Exclu Noel 2012: 2 Forfaits en séries limitées et une remise de 5€
» IPOD TOUCH... EN SPÉCIAL quelque part ? Vous le savez ou l'avez vue en spécial ? Merci bcp :)

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: