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.
Calculatrice spéciale Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Calculatrice spéciale Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Calculatrice spéciale Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Calculatrice spéciale Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Calculatrice spéciale Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Calculatrice spéciale Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Calculatrice spéciale Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Calculatrice spéciale Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Calculatrice spéciale Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Calculatrice spéciale Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Calculatrice spéciale Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Calculatrice spéciale Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Calculatrice spéciale Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Calculatrice spéciale Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Calculatrice spéciale 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 à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

 

 Calculatrice spéciale

Aller en bas 
3 participants
AuteurMessage
Marc

Marc


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

Calculatrice spéciale Empty
MessageSujet: Calculatrice spéciale   Calculatrice spéciale EmptyDim 13 Sep 2015 - 22: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

Calculatrice spéciale Calcul10
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 :

Calculatrice spéciale Image_10

- 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
Marc

Marc


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

Calculatrice spéciale Empty
MessageSujet: Re: Calculatrice spéciale   Calculatrice spéciale EmptyLun 14 Sep 2015 - 5: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


Calculatrice spéciale Print10

Bonne nuit !


Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Calculatrice spéciale Empty
MessageSujet: Re: Calculatrice spéciale   Calculatrice spéciale EmptyLun 14 Sep 2015 - 9: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
Marc

Marc


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

Calculatrice spéciale Empty
MessageSujet: Re: Calculatrice spéciale   Calculatrice spéciale EmptyLun 14 Sep 2015 - 10: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
Jean Claude

Jean Claude


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

Calculatrice spéciale Empty
MessageSujet: Re: Calculatrice spéciale   Calculatrice spéciale EmptyLun 14 Sep 2015 - 10: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
Marc

Marc


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

Calculatrice spéciale Empty
MessageSujet: Re: Calculatrice spéciale   Calculatrice spéciale EmptyMer 16 Sep 2015 - 9: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 !

Calculatrice spéciale Boutob10
Revenir en haut Aller en bas
Klaus

Klaus


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

Calculatrice spéciale Empty
MessageSujet: Re: Calculatrice spéciale   Calculatrice spéciale EmptyMer 16 Sep 2015 - 11: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
http://klauspanoramic.comxa.com/index.html
Marc

Marc


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

Calculatrice spéciale Empty
MessageSujet: Re: Calculatrice spéciale   Calculatrice spéciale EmptyMer 16 Sep 2015 - 21: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
Contenu sponsorisé





Calculatrice spéciale Empty
MessageSujet: Re: Calculatrice spéciale   Calculatrice spéciale Empty

Revenir en haut Aller en bas
 
Calculatrice spéciale
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» demande pour recuperer un text speciale
» Calculatrice
» Calculatrice 8 bits, complément à 2
» Calculatrice romaine
» AND OR XOR : calculatrice 8 bits

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: