' * MENU APPLICATION * MENUQB.BAS
OPTION BASE 1: DEFSTR A-Z: SCREEN 12: WINDOW SCREEN (1, 1)-(640, 480)
DIM Ec(30) AS STRING * 36
LINE (10, 10)-(631, 471), 11, B: PAINT (5, 5), 1, 11
' ***** Definition des traits doubles
H = CHR$(205): V = CHR$(186): Chg = CHR$(201): Chd = CHR$(187)
Cbg = CHR$(200): Cbd = CHR$(188 ): Vd = CHR$(204)
' ***** COULEURS
Cfd% = 0 ' COUL DE FOND ECRAN
Ccv% = 14 ' COUL CADRE VIDE
Cct% = 11: Cte% = 14 ' COUL CADRE/TITRE
Cr% = 4 ' Couleur de remplissage du titre
Titre = " - - > BANQUE/RECETTES/DEPENSES < - - "
L% = 3: GOSUB E06D: GOSUB E06.REMPLI
Titre = " * * DUPONT & DUPOND * * "
L% = 3: GOSUB E06G: GOSUB E06.REMPLI
Cct% = 11: Cte% = 15
Titre = " *** MENU GENERAL *** "
L% = 6: GOSUB E06C: Cr% = 1: GOSUB E06.REMPLI
Ccv% = 11
Lchg% = 8: Cchg% = 3: Lcbd% = 24: Ccbd% = 40: GOSUB E08.CVIDE
Cchg% = 41: Ccbd% = 78: GOSUB E08.CVIDE
Ec(1) = " 1 RESTAURATION de A vers C "
Ec(2) = " 2 INDICATION du NOM "
Ec(3) = " 3 DATE de DEMARRAGE APPLICATION "
Ec(4) = " 4 CREAT/MODIF TITRES COLONNES "
Ec(5) = " 5 CREAT/MODIF Libellés CONSTANTS "
Ec(6) = " 6 SAISIE des ECRITURES "
Ec(7) = " 7 MODIF/ANNULATION des ECRITURES "
Ec(8) = " 8 MODIFICATION de LIGNE/COLONNE "
Ec(9) = " 9 CONSTITUTION des TOTAUX MENSUELS "
Ec(10) = "10 EDITION des ECRITURES "
Ec(11) = "11 EVOLUTION des SOLDES des COMPTES "
Ec(12) = "12 EVOLUTION des SOLDES d'UN COMPTE "
Ec(13) = "13 EDITION avec SELECTION "
Ec(14) = "14 EDITION des TOTAUX MENSUELS "
Ec(15) = "15 SELECTION & GRAPHIQUE sur ECRAN "
Ec(16) = "16 RECONSTITUTION du FICHIER INDEX "
Ec(17) = "17 TRI/EPURATION des ECRITURES "
Ec(18) = "18 10 DERNIERES EXRITURES SAISIES "
Ec(19) = "19 TETRIS "
Ec(20) = "20 MODIFICATION de LIBELLE "
Ec(21) = "21 LA BOURSE "
Ec(22) = "22 En Attente "
Ec(23) = "23 En attente "
Ec(24) = "24 En Attente "
Ec(25) = "25 En Attente "
Ec(26) = "26 CONSULTATION ECRITURES sur ECRAN "
Ec(27) = "27 SAUVEGARDE FICHIERS de C sur A "
Ec(28) = "28 CREATION des FICHIERS à BLANC "
Ec(29) = "29 NOTICE d'UTILISATION "
Ec(30) = "30 FIN de TRAVAIL "
E51: COLOR 15: E% = 0
FOR L% = 9 TO 23: E% = E% + 1: LOCATE L%, 4: PRINT Ec(E%): NEXT L%
FOR L% = 9 TO 23: E% = E% + 1: LOCATE L%, 42: PRINT Ec(E%): NEXT L%
Cct% = 13: Cte% = 15
Titre = " Recherchez l'OPTION désirée ("
Titre = Titre + CHR$(24) + " ou " + CHR$(25) + ") et 'ENTREE' "
Cct% = 11: Cte% = 15: L% = 26: GOSUB E06C: GOSUB E06.REMPLI
LOCATE 26, 45: COLOR 10: PRINT CHR$(24)
Lc% = 26: Cc% = 45: Nc% = 1: GOSUB E07.ENCADRE
LOCATE 26, 50: COLOR 10: PRINT CHR$(25)
Cc% = 50: GOSUB E07.ENCADRE
LOCATE 26, 57: COLOR 10: PRINT "ENTREE"
Cc% = 57: Nc% = 6: GOSUB E07.ENCADRE
Dalle = CHR$(1) + CHR$(4) + CHR$(16) + CHR$(64)
PAINT (25, 33), Dalle, 11
E52: ' ** CHOIX de l'OPTION **
Choix% = 1: Choix.Pr% = 1: L% = 9: L.Pr% = 9: C% = 4: C.Pr% = 4
COLOR 10: LOCATE L%, C%: PRINT Ec(Choix%);
Xg% = (C% - 1) * 8 - 0: Xd% = Xg% + 290 ' = C% * 8 + 282
Yg% = (L% - 1) * 16 - 1: Yd% = L% * 16 + 1
E53: K = INKEY$:
LINE (Xg%, Yg%)-(Xd%, Yd%), 13, B, &H3333
LINE (Xg%, Yg%)-(Xd%, Yd%), 15, B, &HCCCC
FOR XX& = 1 TO 200000: NEXT
LINE (Xg%, Yg%)-(Xd%, Yd%), 0, B, &HFFFF
IF K = "" GOTO E53
SELECT CASE K
CASE CHR$(27): CLS : COLOR 15: END
CASE CHR$(0) + "H", "8": ' Au-dessus
IF L% = 9 THEN
IF C% = 4 THEN
L% = 23: C% = 42: Choix% = 30: GOTO E54
ELSEIF C% = 42 THEN
L% = 23: C% = 4: Choix% = 15: GOTO E54
END IF
END IF
L% = L.Pr% - 1: Choix% = Choix% - 1: GOTO E54
CASE CHR$(0) + "P", "2": ' Au-dessous
IF L% = 23 THEN
IF C% = 42 THEN
L% = 9: C% = 4: Choix% = 1: GOTO E54
ELSEIF C% = 4 THEN
L% = 9: C% = 42: Choix% = 16: GOTO E54
END IF
END IF
L% = L.Pr% + 1: Choix% = Choix% + 1: GOTO E54
CASE CHR$(13): GOTO E55
CASE ELSE: GOSUB E01.BIP: GOTO E54
END SELECT
E54: COLOR 15: LOCATE L.Pr%, C.Pr%: PRINT Ec(Choix.Pr%);
Xg% = (C.Pr% - 1) * 8: Xd% = Xg% + 290
Yg% = (L.Pr% - 1) * 16 - 1: Yd% = L.Pr% * 16 + 1
LINE (Xg%, Yg%)-(Xd%, Yd%), Cfd%, B
COLOR 10: LOCATE L%, C%: PRINT Ec(Choix%);
Xg% = (C% - 1) * 8: Xd% = Xg% + 290
Yg% = (L% - 1) * 16 - 1: Yd% = L% * 16 + 1
LINE (Xg%, Yg%)-(Xd%, Yd%), 12, B, &H3333
LINE (Xg%, Yg%)-(Xd%, Yd%), 15, B, &HCCCC
L.Pr% = L%: C.Pr% = C%: Choix.Pr% = Choix%: GOTO E53
E55: COLOR 14: LOCATE L%, C%: PRINT Ec(Choix%);
Xg% = (C% - 1) * 8: Xd% = Xg% + 290
'LOCATE 28, 10: PRINT Xg%; Xd%;
Yg% = (L% - 1) * 16 - 1: Yd% = L% * 16 + 1
LINE (Xg%, Yg%)-(Xd%, Yd%), 10, B, &H3333
Xg1% = Xg%:
Titre = " - - - > Recherchez l'OPTION désirée (B ou H) et 'ENTREE' "
Titre = " *** 0 si OK, 1 si Erreur *** "
L% = 26: GOSUB E06C: GOSUB E06.REMPLI
E56: S = INKEY$: IF S = "" GOTO E56
SELECT CASE S
CASE CHR$(3), CHR$(27): CLS : COLOR 15: END
CASE "0": GOTO E57
CASE "1": LINE (Xg1%, Yg%)-(Xg1% + 290, Yd%), Cfd%, B: GOTO E51
CASE ELSE: GOSUB E01.BIP: GOTO E56
END SELECT
E57: SELECT CASE Choix%
CASE 1: ' RUN "C:\\BRDG\\P\\RECUPER.BAS"
CASE 2: ' GOTO E58
CASE 3: ' GOTO P01
CASE 4: ' GOTO R01
CASE 5: ' GOTO S01
CASE 6: ' RUN "C:\\BRDG\\P\\SAISIE.BAS"
CASE 7: ' RUN "C:\\BRDG\\P\\MODIFECR.BAS"
CASE 8: ' RUN "C:\\BRDG\\P\\TRANSFER.BAS"
CASE 9: ' RUN "C:\\BRDG\\P\\TOTMENS.BAS"
CASE 10: 'RUN "C:\\BRDG\\P\\EDITION.BAS"
CASE 11: 'RUN "C:\\BRDG\\P\\SOLDES.BAS"
CASE 12: 'RUN "C:\\BRDG\\P\\SOLDCPTE.BAS"
CASE 13: 'RUN "C:\\BRDG\\P\\EDISELEC.BAS"
CASE 14: 'RUN "C:\\BRDG\\P\\TTM.BAS"
CASE 15: 'RUN "C:\\BRDG\\P\\GRAPHIC.BAS"
CASE 16: 'RUN "C:\\BRDG\\P\\RECUPIND.BAS"
CASE 17: 'RUN "C:\\BRDG\\P\\TRIMVTS.BAS"
CASE 18: 'RUN "C:\\BRDG\\P\\CH10DERN.BAS"
CASE 19: SHELL "C:\\JEUX\\TETRIS"
CASE 20 TO 25: GOTO E100.PAS.FAIT
CASE 26: 'RUN "C:\\BRDG\\P\\CONSECRA.BAS"
CASE 27: 'RUN "C:\\BRDG\\P\\SAUVEG.BAS"
CASE 28: 'RUN "C:\\BRDG\\P\\CREAFICH.BAS"
CASE 29: 'GOTO E100.PAS.FAIT
CASE 30: CLS : COLOR 15: SYSTEM
END SELECT
GOTO E51
E01.BIP: PLAY "T150 O2 L16CEG>C": RETURN
E01.SIRENE: FOR Z% = 500 TO 100 STEP -5: SOUND Z%, Z% / 5000: NEXT Z%: RETURN
' ***** TITRE ENTOURE d'un CADRE **********
E06G: L% = L% - 1: C% = 4: GOTO E06.TITRE
E06C: L% = L% - 1: C% = 39 - LEN(Titre) / 2: GOTO E06.TITRE
E06D: L% = L% - 1: C% = 76 - LEN(Titre)
E06.TITRE: Lg% = LEN(Titre): COLOR Cct%
LOCATE L%, C%: PRINT Chg; STRING$((Lg%), H); Chd;
LOCATE L% + 1, C%: PRINT V; : LOCATE L% + 1, C% + Lg% + 1: PRINT V;
LOCATE L% + 2, C%: PRINT Cbg; STRING$((Lg%), H); Cbd;
LOCATE L% + 1, C% + 1: COLOR Cte%: PRINT Titre; : RETURN
E06.REMPLI: Xg% = C% * 8 + 1: Xd% = (C% + Lg%) * 8 + 1
Yh% = (L%) * 16 - 6: Yb% = Yh% + 26
FOR X% = Xg% TO Xd%: FOR Y% = Yh% TO Yb%
IF POINT(X%, Y%) = 0 THEN PSET (X%, Y%), Cr%
NEXT Y%, X%
RETURN
E07.ENCADRE: Xchg% = (Cc% - 1) * 8 + 1: Ychg% = (Lc% - 1) * 16 + 1
Xcbd% = (Cc% + Nc% - 1) * 8: Ycbd% = Ychg% + 14: Kc% = 15
LINE (Xchg%, Ychg%)-(Xcbd%, Ycbd%), Kc%, B, &H3333
LINE (Xchg%, Ychg%)-(Xcbd%, Ycbd%), 12, B, &HCCCC
RETURN
E08.CVIDE: COLOR Ccv%
LOCATE Lchg%, Cchg%: PRINT Chg; STRING$((Ccbd% - Cchg% - 1), H); Chd;
LOCATE Lcbd%, Cchg%: PRINT Cbg; STRING$((Ccbd% - Cchg% - 1), H); Cbd;
FOR L% = Lchg% + 1 TO Lcbd% - 1
LOCATE L%, Cchg%: PRINT V; : LOCATE L%, Ccbd%: PRINT V; : NEXT L%
RETURN
E100.PAS.FAIT:
FOR A% = 1 TO 5
FOR L% = 25 TO 27: LOCATE L%, 15: PRINT SPACE$(54); : NEXT L%
Titre = " - - * DESOLE, PROGRAMME NON TERMINE .... "
Cct% = 12: Cte% = 15: L% = 26: GOSUB E06C: BEEP
NEXT A%
SLEEP 2: GOTO E51