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
» PANORAMIC V 1
Base pour un programme de gestion Emptypar papydall Aujourd'hui à 2:21

» Gestion d'un système client-serveur.
Base pour un programme de gestion Emptypar Klaus Hier à 23:59

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Base pour un programme de gestion Emptypar Marc Hier à 12:14

» @Jack
Base pour un programme de gestion Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Base pour un programme de gestion Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Base pour un programme de gestion Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Base pour un programme de gestion Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Base pour un programme de gestion Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Base pour un programme de gestion Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Base pour un programme de gestion Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Base pour un programme de gestion Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Base pour un programme de gestion Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Base pour un programme de gestion Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Base pour un programme de gestion Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Base pour un programme de gestion Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

 

 Base pour un programme de gestion

Aller en bas 
+2
Jicehel
Jean Claude
6 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 13:56

Bonjour à tous, j'ai besoin de cobayes pour tester ce bout de programme.

MISSION: tester le comportement du programme en modifiant la taille de la fenêtre et observer le positionnement des objets, sous w7 et avec des écrans différents.

COMPTE RENDU DE MISSION: vos commentaires en m'indiquant la taille de votre écran et votre OS.

RÉCOMPENSE: vous pouvez garder ce programme pour vous. il est plein de commentaires pour vous aidez à piger.

Un conseil, faites un dossier, car il y a 3 fichiers qui sont créés.

Code:
' Base pour programme

rem OBJECTIF:' 1) Avoir une base de dépard pour un programme de type gestion dont la
'                taille et les couleurs des fenêtres et objets soit modifiable par l'utilisateur.
'                La taille modifiable de la fenêtre permet la portabilité du programme.
'              2) Proposer une gamme de routines pour la gestion de fichiers et de leur contenu


rem INSTALLATION: ' Avant de lancer, créer un dossier pour y mettre ce programme
'                  Ensuite: suivre les indications


rem les variables et labels importants:
'  nf = Numéro des Forms : no = Numéro d'objet
'  caption_nf$ = caption du form
'  fp$ = Fichier contenant les paramètres de règlages (thèmes)
'  fut$ = fichier contenant les paramètres des utilisateurs
'      Exemples: 01|JEAN CLAUDE|Mot de passe|O|§|§|§|§|§|§|§|§|§|§|§
'      § : éléménts 'el$()' non définis
'      01 = nut$ (numéro d'utilisateur)
'      JEAN CLAUDE = identifiant
'      Mot de passe et O qui gère sa mémorisation
'      s$="|" (séparateur)

rem Les labels de gestion de fichiers: (commentaires dans les labels)
rem clear_lig_fich :' vide tout les élements de la ligne (lig_fich$) avant de commencer une option du programme
rem fab_lig_fich :' fabrique la ligne (lig_fich$) qui va être enregistrée en reprenant les contenu de el$(1 à 15)
                  ' lig_fich$=el$(1)+"|"+el$(2)...etc..... jusqu'a 15
rem cre_fichier :' création d'un fichier inexistant (ce fichier sera vide) (voir aussi label install)
rem sel_lig_fich :' Sélectionne la ligne (N° NumLigFich) contenu dans fichier$ par un nombre d'éléménts (nber)
rem        compare_lig_fich :' Retourne la ligne recherchée contenu dans fichier$
rem        afi_liste_elements :'affiche les élements recherchés -re(r) délimités par nber- d'un fichier dand un list
rem        exemple d appel de la fonction:' nber=2:re(1)=1:re(2)=2:nl=103:gosub sel_lig_fich
rem dec_lig_fich :' retourne la ligne sélectionnée de fichier$  dans a$ pour la découper par dec_string
rem              dec_string :' découpe la ligne a$ et transpose dans el$(1 à 15).si el$(n)="§" alors el$(n)=""
rem save_add_lig_fichier :' Ajoute la ligne lig_fichier$ dans le dlist nodl et enregistre dans fichier$ (nodl=numéro du DLIST pour la gestion du fichier)
rem save_remplace_lig_fichier :' Remplace la ligne lig_fichier$ dans le dlist nodl et enregistre dans fichier$
rem save_sup_lig_fichier :' Supprime la ligne lig_fichier$ dans le dlist nodl et enregistre dans fichier$


rem CHANTIER ( à faire):
' terminer la gestion des utilisateurs (menu administrateur)

' ==============================================================================
hide 0
label dims,labels,gui,init_dims:gosub labels:gosub dims:gosub init_dims:gosub gui
display
END
' =============================== PROGRAMME ====================================
operations:
' ........ bla bla bla
end
return
' ================================== GUI (Fixe) ================================
gui:
' form 1
nf=1:lnf=1024:hnf=768:' taille minimum de la fenêtre
gosub cre_form_nf:show nf:gosub main_menu10:on_close nf,fin

' Exemple pour le container 100: WIDTH et LEFT sont gérés au label aplic_redim_form_obj
' car j'ai souhaité que ces 2 dimensions soit paramétrer avec la taille de la fenêtre
' donc modifiable par l'utilisateur.
' et j'ai voulu que HEIGHT et TOP soit fixes (Non modifiable).
' Je n'ai pas géré, ici, COLOR et FONT_COLOR de cet objet car j'en laisse le choix à l'utilisateur.
' bandeau commun utilisareurs et règlage

no=100:container no:height no,50:top no,10:hide no
no=101:alpha no:parent no,100:width no,width(100)-20:top no,18:left no,10
font_bold no:font_name no,"Arial":font_size no,11
no=102:alpha no:parent no,100:width no,20:top no,16:font_bold no
font_name no,"Wingdings 3":font_size no,14:caption no,chr$(82):hint no," Quitter "
no=107:alpha no:parent no,100:width no,20:top no,16:font_bold no
font_name no,"Wingdings":font_size no,14:caption no,chr$(60):hint no," Enregistrer ":hide no
' utilisateurs
no=103:list no:width no,300:height no,185:font_bold no:font_name no,"Arial":font_size no,11:hide no
no=104:edit no:width no,430:height no,20:font_bold no:font_name no,"Arial":font_size no,11:hide no
no=105:button no:width no,20:height no,20:font_bold no:font_name no,"Arial":font_size no,11:caption no,"X":hide no
no=106:check no:width no,300:height no,20:caption no," Mémoriser le mot de passe "
font_bold no:font_name no,"Arial":font_size no,11:hide no
' no 108 à 119 libre pour extention
' réglages
no=120:container no:width no,365:height no,500:top no,100:hide no
no=121:alpha no:parent no,120:top no,20:left no,20:caption no,"Thèmes                        Fenêtre et Remplissage":font_bold no:font_name no,"Arial":font_size no,11
no=122:combo no:parent no,120:top no,40:left no,20:font_bold no:font_name no,"Arial":font_size no,11
item_add no,"Gris":item_add no,"Bleu":item_add no,"Marron":item_add no,"Vert"
no=123:alpha no:parent no,120:top no,46:left no,210:caption no,"+ Luminosité -":font_bold no:font_name no,"Arial":font_size no,11
no=124:alpha no:parent no,120:top no,42:left no,185:caption no,chr$(55):font_bold no:font_name no,"Webdings":font_size no,14
no=125:alpha no:parent no,120:top no,42:left no,315:caption no,chr$(56):font_bold no:font_name no,"Webdings":font_size no,14
' Couleurs avancées
no=126:container no:parent no,120:width no,325:height no,160:top no,100:left no,20
font_bold no:font_name no,"Arial":caption no,"  Réglages avancés des couleurs  "
no=127:option no:parent no,126:width no,150:top no,40:left no,10:caption no," Couleurs de la fenêtre "
no=128:option no:parent no,126:width no,165:top no,80:left no,10:caption no," Couleurs de remplissage "
no=129:option no:parent no,126:width no,150:top no,120:left no,10:caption no," Couleurs de la police "
no=130:alpha no:parent no,126:top no,15:left no,245:caption no," -      +":font_bold no:font_name no,"Arial":font_size no,14
no=131:alpha no:parent no,126:top no,45:left no,250:inactive no
color no,255,200,200:font_name no,"Marlett":caption no,chr$(100):hint no," Rouge - "
no=132:alpha no:parent no,126:top no,45:left no,290:inactive no
color no,255,0,0:font_name no,"Marlett":caption no,chr$(100):hint no," Rouge + "
no=133:alpha no:parent no,126:top no,85:left no,250:inactive no
color no,200,255,200:font_name no,"Marlett":caption no,chr$(100):hint no," Vert - "
no=134:alpha no:parent no,126:top no,85:left no,290:inactive no
color no,0,255,0:font_name no,"Marlett":caption no,chr$(100):hint no," Vert + "
no=135:alpha no:parent no,126:top no,125:left no,250:inactive no
color no,150,200,255:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu - "
no=136:alpha no:parent no,126:top no,125:left no,290:inactive no
color no,0,0,255:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu + "
' palette
no=137:container no:parent no,120:width no,175:height no,180:top no,280:left no,20
font_bold no:font_name no,"Arial":caption no,"  Palette de couleurs  "
no=138:alpha no:parent no,137:top no,30:left no,20:inactive no
color no,0,0,0:font_name no,"Marlett":caption no,chr$(100):hint no," Noir "
no=139:alpha no:parent no,137:top no,30:left no,60:inactive no
color no,100,100,100:font_name no,"Marlett":caption no,chr$(100):hint no," Gris Foncé "
no=140:alpha no:parent no,137:top no,30:left no,100:inactive no
color no,200,200,200:font_name no,"Marlett":caption no,chr$(100):hint no," Gris Clair "
no=141:alpha no:parent no,137:top no,30:left no,140:inactive no
color no,255,255,255:font_name no,"Marlett":caption no,chr$(100):hint no," Blanc "
no=142:alpha no:parent no,137:top no,60:left no,20:inactive no
color no,255,0,0:font_name no,"Marlett":caption no,chr$(100):hint no," Rouge Standard "
no=143:alpha no:parent no,137:top no,60:left no,60:inactive no
color no,255,100,100:font_name no,"Marlett":caption no,chr$(100):hint no," Orange "
no=144:alpha no:parent no,137:top no,60:left no,100:inactive no
color no,255,150,150:font_name no,"Marlett":caption no,chr$(100):hint no," Rose Soutenu "
no=145:alpha no:parent no,137:top no,60:left no,140:inactive no
color no,255,200,200:font_name no,"Marlett":caption no,chr$(100):hint no," Rose clair "
no=146:alpha no:parent no,137:top no,90:left no,20:inactive no
color no,0,255,0:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Standard "
no=147:alpha no:parent no,137:top no,90:left no,60:inactive no
color no,100,255,100:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Clair "
no=148:alpha no:parent no,137:top no,90:left no,100:inactive no
color no,150,255,150:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Très Clair "
no=149:alpha no:parent no,137:top no,90:left no,140:inactive no
color no,200,255,200:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Très Très Clair "
no=150:alpha no:parent no,137:top no,120:left no,20:inactive no
color no,0,100,0:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Foncé "
no=151:alpha no:parent no,137:top no,120:left no,60:inactive no
color no,200,150,50:font_name no,"Marlett":caption no,chr$(100):hint no," Ocre "
no=152:alpha no:parent no,137:top no,120:left no,100:inactive no
color no,255,255,0:font_name no,"Marlett":caption no,chr$(100):hint no," Jaune "
no=153:alpha no:parent no,137:top no,120:left no,140:inactive no
color no,100,150,150:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu-Vert "
no=154:alpha no:parent no,137:top no,150:left no,20:inactive no
color no,0,0,255:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu Standard "
no=155:alpha no:parent no,137:top no,150:left no,60:inactive no
color no,50,150,255:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu Clair "
no=156:alpha no:parent no,137:top no,150:left no,100:inactive no
color no,200,150,255:font_name no,"Marlett":caption no,chr$(100):hint no," Mauve "
no=157:alpha no:parent no,137:top no,150:left no,140:inactive no
color no,255,0,255:font_name no,"Marlett":caption no,chr$(100):hint no," Violet "
no=158:container no:parent no,120:width no,145:height no,180:top no,280:left no,200
font_bold no:font_name no,"Arial":caption no,"  Fenêtre  "
no=159:alpha no:parent no,158:top no,20:width no,100:left no,2
caption no,"Cliquez sur le bouton X"+nl$+" de la fenêtre et règlez"+nl$+"    largeur, hauteur,"+nl$+"    Puis sauvegardez":font_bold no:font_name no,"Arial":font_size no,8
no=160:alpha no:parent no,158:width no,20:top no,90:left no,80:font_bold no
font_name no,"Wingdings":font_size no,14:caption no,chr$(60):hint no," Enregistrer "
no=161:alpha no:parent no,158:width no,20:top no,90:left no,40:font_bold no
font_name no,"Wingdings":font_size no,12:caption no,chr$(203):hint no," Appliquer les dimensions "
no=162:alpha no:parent no,158:top no,160:width no,100:left no,5:font_bold no:font_name no,"Arial":font_size no,8
no=163:alpha no:parent no,158:width no,20:top no,120:left no,80:font_bold no
font_name no,"Marlett":font_size no,14:caption no,chr$(50):hint no," Dimension Minimum "
no=164:alpha no:parent no,158:width no,20:top no,122:left no,40:font_bold no
font_name no,"Marlett":font_size no,12:caption no,chr$(49):hint no," Plein écran "

' ici: ajouter d'autres objets en paramètrant les tailles, position, couleurs, caption, FIXES

' dlist (libre de 92 à 99)
dlist 90:' contient l' Utilisateur (et paramètres au lancement)
dlist 91:' contient le fichier code (ficod$="cfw_codes.jjc") qui ne sert à rien pour le moment
' .......
return
' ================================ MAIN_MENU 10 ================================
main_menu10:
main_menu 10
sub_menu 11:parent 11,10:caption 11," Fichier "
  sub_menu 12:parent 12,11:caption 12," Ouvrir ":on_click 12,start
  sub_menu 13:parent 13,11:caption 13," Quitter ":on_click 13,fin
' libre de 14 à 19
sub_menu 20:parent 20,10:caption 20," Opérations ":on_click 20,operations:inactive 20
' libre de 21 à 79
sub_menu 80:parent 80,10:caption 80," Administrateur ":hide 80
sub_menu 89:parent 89,10:caption 89," Réglages ":on_click 89,reglages:inactive 89
' FIN pour main_menu 10
return
' *****
inactive_menu:
' désactive le main_menu 10 (quand on part dans une option de ce menu)
inactive 11:inactive 20:inactive 80:inactive 89
return
active_menu:
' réactive le main_menu 10 (quand on quitte une option en cours)
if nut$="01" then show 80:' (menu administrateur)
active 11:active 20:active 80:active 89
' désactive si pas les fichiers
nodl=91:fichier$=ficod$:clear nodl:file_load nodl,fichier$:if count(nodl)=0 then inactive 20:' (menu operation)
' ......
return
' =========================== GESTION des PARAMETRES ===========================
init_param:
' charge le fichier paramètre et initialise les variables concernées
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich
nb_lig_grid=val(el$(1)):lnf=val(el$(11)):hnf=val(el$(12))
' reste disponible el$ 13,14 et 15
' ......
' ******************************************************************************
' applique les couleurs contenus dans le fichier paramètre (SI modifiables par l'utilisateur)
aplic_color:
' couleur du fond des FENETRES (Forms)
rouge=el$(2):vert=el$(3):bleu=el$(4)
nf=1:color nf,rouge,vert,bleu
' .........
' couleurs des POLICES des Objets
rouge=el$(5):vert=el$(6):bleu=el$(7)
no=101:font_color no,rouge,vert,bleu:' alpha
no=102:font_color no,rouge,vert,bleu:' bouton quiter
for no=106 to 107:font_color no,rouge,vert,bleu:next no:' case à cocher et disquette enreg
for no=121 to 125:font_color no,rouge,vert,bleu:next no:' règlage thèmes et luminosité
for no=160 to 164:font_color no,rouge,vert,bleu:next no:' règlage dimensions form
' ...........
' couleur de fond (REMPLISSAGE) des list, edit, combo
rouge=el$(8):vert=el$(9):bleu=el$(10)
no=103:color no,rouge,vert,bleu:' list
no=104:color no,rouge,vert,bleu:' edit
no=122:color no,rouge,vert,bleu:' comb
' ...........
display
return
' ********
aplic_redim_form_obj:
' RE_dimension des Forms et objets (SI changement de la taille de la fenêtre)
width nf,lnf:height nf,hnf:top nf,int((screen_y-height(nf))/2):left nf,int((screen_x-width(nf))/2)
a=int(width(nf)/18)-len(ut$):caption nf,caption_nf$+string$(a," ")+ut$+string$(a," ")+date$
' ici on gère les éléments de taille et position des objets qui sont modifiables par l'utilisateur (GUI Modifiable)
no=100:width no,lnf-30:left no,int(width(nf)/2)-int(width(no)/2)-4
no=102:left no,width(nf)-60:no=107:left no,width(nf)-100
no=103:top no,int((height(nf)/2)-30)-int(height(no)/2):left no,int(width(nf)/2)-int(width(no)/2)
no=104:top no,int((height(nf)/2)-30)-int(height(no)/2):left no,int(width(nf)/2)-int(width(no)/2)
no=105:top no,int((height(nf)/2)-30)-int(height(no)/2):left no,(int(width(nf)/2)-int(width(no)/2))+(int(width(104)/2)-13)
no=106:top no,int((height(nf)/2)+60)-int(height(no)/2):left no,int(width(nf)/2)-int(width(no)/2)
no=120:left no,int(width(nf)/2)-int(width(no)/2)
' ....
return
' *********
cre_param:
' seulement au premier lancement (paramètres par défaud)
el$(1)="50":' nombre de ligne des grids
el$(2)="210":el$(3)="225":el$(4)="240":' couleur de fond de Form
el$(5)="0":el$(6)="0":el$(7)="255":' couleur des polices
el$(8)="235":el$(9)="245":el$(10)="255":' couleur de fond  list, edit, combo
el$(11)="1024":el$(12)="768":' dimension de la fenêtre
gosub fab_lig_fich:gosub cre_fichier
return
' =============================  DIM et LABEL ==================================
labels:
label operations:' operations
label fin,arret,cre_form_nf,aplic_redim_form_obj,main_menu10,start,start2,start3,cre_param,install:' init prog
label cre_admin,bienvenu,cre_admi2,cre_admi3,sel_utilisateur,init_param:' init prog
label quit_sel_utilisateur,change_mot,quit_change_mot,change_mot2,change_mot3,change_mot4:' init prog
label saisie_mdp,quit_saisie_mdp,saisie_mdp2,bouton,reglages,quit_reglages:' init prog
label inactive_menu,active_menu,theme,th_gris,aplic_color,th_bleu,th_marron,th_vert:' init prog
label lumin+,lumin-,couleur_avance,reinit_couleur,rouge-,vert-,bleu-,rouge+,vert+,bleu+:' init prog
label prep_lig_color,save_lig_param_remp,noir,palette,Gris_Fonce,Gris_Clair,blanc:' init prog
label mark_off_choix,rougestd,orange,roseS,roseC,vertstd,vertC,vertTC,vertTTC,vertF:' init prog
label Ocre,jaune,bleu_vert,bleustd,bleuC,mauve,violet,enreg_dim_form,dim_form,plein_ecran:' init prog
label ecran_mini
label save_add_lig_fichier,afi_liste_elements,fab_lig_fich,cre_fichier,clear_lig_fich:' Gestion fichier
label dec_lig_fich,dec_string,sel_lig_fich,compare_lig_fich,save_remplace_lig_fichier,save_sup_lig_fichier
return
' *****
dims:
dim a$,b$,c$,d$,e$,f$,g$,h$:' dim string généraliste
dim a,b,c,d,e,f,g,h,n,m,p,po,r,v,x,y:' dim réelle généraliste
dim nf,no,nodl,nba,nbe,nber,ne,nl,nl$,ls,s$,lnf,hnf,bouton:' dim pour routines
dim fp$,lig_fich$,el_afi$,fichier$,fut$,fcpt$,ficod$,NumLigFich,NumLigSel,ligsel$:' les fichiers
dim re(15),el$(15),couleur(15):' dim tableaux
dim nb_lig_grid,mess_rep_oblig$,caption_nf$,prov$,rouge,vert,bleu:' dim gui, param, message
dim nut$,ut$:' dim utilisateurs
return
' *****
init_dims:
fp$="cfx_param_gen.jjc"
fut$="cfw_utilisateurs.jjc"
ficod$="cfw_codes.jjc"
APPLICATION_TITLE "Non du Prog: Message"
s$="|":nl$=chr$(13)+chr$(10)
mess_rep_oblig$="      *  Réponse Obligatoire  *      "
caption_nf$=" NOM DU PROG"
return
' ================================ START =======================================
start:
inactive 12:' (Menu ouvrir)
inactive 11:' (Menu fichier)
prov$="start"
nf=1:show nf:on_close nf,fin
' paramètres
fichier$=fp$:if file_exists(fichier$)=0 then gosub cre_param:gosub install:' crée les fichiers vides
gosub init_param:gosub aplic_redim_form_obj
' charger le fichier utilisateur et procéder à la sélection (ou crée l'administrateur, si première utilisation)
nodl=90:fichier$=fut$:clear nodl:file_load nodl,fichier$
if count(nodl)=0 then gosub cre_admin
gosub sel_utilisateur:a$=ligsel$:gosub dec_string
' vérifie que utilisateur sélectionné a un mot de passe <> BONJOUR, sinon on change le mot
if el$(3)="BONJOUR" then gosub change_mot
nut$=el$(1):ut$=el$(2):' dim utilisateurs à garder pendant le déroulement du prog
a=int(width(nf)/18)-len(ut$):caption nf,caption_nf$+string$(a," ")+ut$+string$(a," ")+date$
if el$(3)<>"BONJOUR" then goto start2
end
return
start2:
gosub saisie_mdp:' saisir le mot de passe
end
return
start3:
gosub active_menu
return
' ============================== Sous-prog Param ===============================
reglages:
gosub inactive_menu:show 100:caption 101,"Réglage des paramètres dimensions et couleurs"
show 120:show 102:on_click 102,quit_reglages:nodl=90:fichier$=fp$:clear nodl
file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich:gosub reinit_couleur
on_click 122,theme:on_click 125,lumin-:on_click 124,lumin+
on_click 127,couleur_avance:on_click 128,couleur_avance:on_click 129,couleur_avance
on_click 160,enreg_dim_form:on_click 161,dim_form:on_click 164,plein_ecran:on_click 163,ecran_mini:inactive 160
if lnf=>screen_x and hnf=>screen_y then inactive 164
if lnf<=1024 and hnf<=768 then inactive 163
return
' *********
dim_form:
bouton=161:gosub bouton:active 160:active 164
lnf=width(nf):hnf=height(nf)
caption 162,str$(lnf)+" X "+str$(hnf)
if lnf<1024 then message "dimension minimum 1024 x 768":return
if hnf<768 then message "dimension minimum 1024 x 768":return
gosub aplic_redim_form_obj
return
' ----
enreg_dim_form:
bouton=160:gosub bouton:inactive 160
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich
el$(11)=str$(lnf):el$(12)=str$(hnf)
gosub fab_lig_fich:gosub save_remplace_lig_fichier
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1
gosub dec_lig_fich
lnf=val(el$(11)):hnf=val(el$(12))
return
' ----
ecran_mini:
bouton=163:gosub bouton:inactive 163:active 160:active 164
lnf=1024:hnf=768:gosub aplic_redim_form_obj
return
' ----
plein_ecran:
bouton=164:gosub bouton:inactive 164:active 160:active 163
lnf=screen_x:hnf=screen_y:gosub aplic_redim_form_obj
return
' ******
couleur_avance:
for n=131 to 136:active n:next n:for n=138 to 157:active n:next n
on_click 120,mark_off_choix:on_click 126,mark_off_choix
on_click 131,rouge-:on_click 133,vert-:on_click 135,bleu-:on_click 132,rouge+
on_click 134,vert+:on_click 136,bleu+:on_click 138,noir:on_click 139,Gris_Fonce
on_click 140,Gris_Clair:on_click 141,blanc:on_click 142,rougestd:on_click 143,orange
on_click 144,roseS:on_click 145,roseC:on_click 146,vertstd:on_click 147,vertC
on_click 148,vertTC:on_click 149,vertTTC:on_click 150,vertF:on_click 151,Ocre
on_click 152,jaune:on_click 153,bleu_vert:on_click 154,bleustd:on_click 155,bleuC
on_click 156,mauve:on_click 157,violet
return
' ----
violet:
bouton=157:gosub bouton:r=255:v=0:b=255:gosub palette:return
' ----
mauve:
bouton=156:gosub bouton:r=200:v=150:b=255:gosub palette:return
' ----
bleuC:
bouton=155:gosub bouton:r=50:v=150:b=255:gosub palette:return
' ----
bleustd:
bouton=154:gosub bouton:r=0:v=0:b=255:gosub palette:return
' ----
bleu_vert:
bouton=153:gosub bouton:r=100:v=150:b=150:gosub palette:return
' ----
jaune:
bouton=152:gosub bouton:r=255:v=255:b=0:gosub palette:return
' ----
Ocre:
bouton=151:gosub bouton:r=200:v=150:b=50:gosub palette:return
' ----
vertF:
bouton=150:gosub bouton:r=0:v=100:b=0:gosub palette:return
' ----
vertTTC:
bouton=149:gosub bouton:r=200:v=255:b=200:gosub palette:return
' ----
vertTC:
bouton=148:gosub bouton:r=150:v=255:b=150:gosub palette:return
' ----
vertC:
bouton=147:gosub bouton:r=100:v=255:b=100:gosub palette:return
' ----
vertstd:
bouton=146:gosub bouton:r=0:v=255:b=0:gosub palette:return
' ----
roseC:
bouton=145:gosub bouton:r=255:v=200:b=200:gosub palette:return
' ----
roseS:
bouton=144:gosub bouton:r=255:v=150:b=150:gosub palette:return
' ----
orange:
bouton=143:gosub bouton:r=255:v=100:b=100:gosub palette:return
' ----
rougestd:
bouton=142:gosub bouton:r=255:v=0:b=0:gosub palette:return
' ----
blanc:
bouton=141:gosub bouton:r=255:v=255:b=255:gosub palette:return
' ----
Gris_Clair:
bouton=140:gosub bouton:r=200:v=200:b=200:gosub palette:return
' ----
Gris_Fonce:
bouton=139:gosub bouton:r=100:v=100:b=100:gosub palette:return
' ----
noir:
bouton=138:gosub bouton:r=0:v=0:b=0:gosub palette:return
' -----
palette:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=138 to 157:inactive n:next n
if checked(127)=1
couleur(2)=r:el$(2)=str$(couleur(2)):couleur(3)=v:el$(3)=str$(couleur(3)):couleur(4)=b:el$(4)=str$(couleur(4))
end_if
if checked(129)=1
couleur(5)=r:el$(5)=str$(couleur(5)):couleur(6)=v:el$(6)=str$(couleur(6)):couleur(7)=b:el$(7)=str$(couleur(7))
end_if
if checked(128)=1
couleur(8)=r:el$(8)=str$(couleur(8)):couleur(9)=v:el$(9)=str$(couleur(9)):couleur(10)=b:el$(10)=str$(couleur(10))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich:gosub reinit_couleur
active 124:active 125:set_focus 120
mark_off_choix:
for n=131 to 136:inactive n:next n:for n=138 to 157:inactive n:next n
mark_off 127:mark_off 128:mark_off 129
return
' ----
vert+:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=134:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(3)=couleur(3)+5:if couleur(3)>250 then couleur(3)=255:inactive 134
el$(3)=str$(couleur(3))
end_if
if checked(128)=1
couleur(9)=couleur(9)+5:if couleur(9)>250 then couleur(9)=255:inactive 134
el$(9)=str$(couleur(9))
end_if
if checked(129)=1
couleur(6)=couleur(6)+5:if couleur(6)>250 then couleur(6)=255:inactive 134
el$(6)=str$(couleur(6))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ----
bleu+:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=136:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(4)=couleur(4)+5:if couleur(4)>250 then couleur(4)=255:inactive 136
el$(4)=str$(couleur(4))
end_if
if checked(128)=1
couleur(10)=couleur(10)+5:if couleur(10)>250 then couleur(10)=255:inactive 136
el$(10)=str$(couleur(10))
end_if
if checked(129)=1
couleur(7)=couleur(7)+5:if couleur(7)>250 then couleur(7)=255:inactive 136
el$(7)=str$(couleur(7))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ----
rouge+:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=132:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(2)=couleur(2)+5:if couleur(2)>250 then couleur(2)=255:inactive 132
el$(2)=str$(couleur(2))
end_if
if checked(128)=1
couleur(8)=couleur(8)+5:if couleur(8)>250 then couleur(8)=255:inactive 132
el$(8)=str$(couleur(8))
end_if
if checked(129)=1
couleur(5)=couleur(5)+5:if couleur(5)>250 then couleur(5)=255:inactive 132
el$(5)=str$(couleur(5))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ----
bleu-:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=135:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(4)=couleur(4)-5:if couleur(4)<5 then couleur(4)=0:inactive 135
el$(4)=str$(couleur(4))
end_if
if checked(128)=1
couleur(10)=couleur(10)-5:if couleur(10)<5 then couleur(10)=0:inactive 135
el$(10)=str$(couleur(10))
end_if
if checked(129)=1
couleur(7)=couleur(7)-5:if couleur(7)<5 then couleur(7)=0:inactive 135
el$(7)=str$(couleur(7))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ----
vert-:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=133:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(3)=couleur(3)-5:if couleur(3)<5 then couleur(3)=0:inactive 133
el$(3)=str$(couleur(3))
end_if
if checked(128)=1
couleur(9)=couleur(9)-5:if couleur(9)<5 then couleur(9)=0:inactive 133
el$(9)=str$(couleur(9))
end_if
if checked(129)=1
couleur(6)=couleur(6)-5:if couleur(6)<5 then couleur(6)=0:inactive 133
el$(6)=str$(couleur(6))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' -----
rouge-:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=131:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(2)=couleur(2)-5:if couleur(2)<5 then couleur(2)=0:inactive 131
el$(2)=str$(couleur(2))
end_if
if checked(128)=1
couleur(8)=couleur(8)-5:if couleur(8)<5 then couleur(8)=0:inactive 131
el$(8)=str$(couleur(8))
end_if
if checked(129)=1
couleur(5)=couleur(5)-5:if couleur(5)<5 then couleur(5)=0:inactive 131
el$(5)=str$(couleur(5))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ******
lumin+:
bouton=124:gosub bouton:active 125
couleur(2)=couleur(2)+5:if couleur(2)>250 then couleur(2)=255:inactive 124
el$(2)=str$(couleur(2))
couleur(3)=couleur(3)+5:if couleur(3)>250 then couleur(3)=255:inactive 124
el$(3)=str$(couleur(3))
couleur(4)=couleur(4)+5:if couleur(4)>250 then couleur(4)=255:inactive 124
el$(4)=str$(couleur(4))
couleur(8)=couleur(8)+5:if couleur(8)>250 then couleur(8)=255:inactive 124
el$(8)=str$(couleur(8))
couleur(9)=couleur(9)+5:if couleur(9)>250 then couleur(9)=255:inactive 124
el$(9)=str$(couleur(9))
couleur(10)=couleur(10)+5:if couleur(10)>250 then couleur(10)=255:inactive 124
el$(10)=str$(couleur(10))
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp:nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1
gosub dec_lig_fich:gosub reinit_couleur:mark_off 127:mark_off 128:mark_off 129:active 124:active 125:set_focus 120
for n=131 to 136:inactive n:next n:for n=138 to 157:inactive n:next n
return
' ----
lumin-:
bouton=125:gosub bouton:active 124
couleur(2)=couleur(2)-5:if couleur(2)<5 then couleur(2)=0:inactive 125
el$(2)=str$(couleur(2))
couleur(3)=couleur(3)-5:if couleur(3)<5 then couleur(3)=0:inactive 125
el$(3)=str$(couleur(3))
couleur(4)=couleur(4)-5:if couleur(4)<5 then couleur(4)=0:inactive 125
el$(4)=str$(couleur(4))
couleur(8)=couleur(8)-5:if couleur(8)<5 then couleur(8)=0:inactive 125
el$(8)=str$(couleur(8))
couleur(9)=couleur(9)-5:if couleur(9)<5 then couleur(9)=0:inactive 125
el$(9)=str$(couleur(9))
couleur(10)=couleur(10)-5:if couleur(10)<5 then couleur(10)=0:inactive 125
el$(10)=str$(couleur(10))
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp:nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1
gosub dec_lig_fich:gosub reinit_couleur:mark_off 127:mark_off 128:mark_off 129:active 124:active 125:set_focus 120
for n=131 to 136:inactive n:next n:for n=138 to 157:inactive n:next n
return
' *******
theme:
mark_off 127:mark_off 128:mark_off 129
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich
a$=text$(122)
if a$="Gris" then gosub th_gris
if a$="Bleu" then gosub th_bleu
if a$="Marron" then gosub th_marron
if a$="Vert" then gosub th_vert
save_lig_param_remp:
gosub fab_lig_fich:gosub save_remplace_lig_fichier
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1
gosub dec_lig_fich:gosub reinit_couleur
set_focus 120
return
' ----
th_vert:
el$(2)="40":el$(3)="180":el$(4)="120":' couleur de fond de Form
el$(5)="0":el$(6)="50":el$(7)="0":' couleur des polices
el$(8)="140":el$(9)="255":el$(10)="200":' couleur de fond  list, edit, combo
gosub aplic_color:gosub reinit_couleur
return
' ----
th_marron:
el$(2)="170":el$(3)="150":el$(4)="140":' couleur de fond de Form
el$(5)="60":el$(6)="40":el$(7)="40":' couleur des polices
el$(8)="210":el$(9)="190":el$(10)="190":' couleur de fond  list, edit, combo
gosub aplic_color:gosub reinit_couleur
return
' ----
th_bleu:
el$(2)="210":el$(3)="225":el$(4)="240":' couleur de fond de Form
el$(5)="0":el$(6)="0":el$(7)="255":' couleur des polices
el$(8)="235":el$(9)="245":el$(10)="255":' couleur de fond  list, edit, combo
gosub aplic_color:gosub reinit_couleur
return
' ----
th_gris:
el$(2)="210":el$(3)="210":el$(4)="220":' couleur de fond Form
el$(5)="0":el$(6)="0":el$(7)="0":' couleur des polices
el$(8)="245":el$(9)="245":el$(10)="255":' couleur de fond  list, edit, combo
gosub aplic_color:gosub reinit_couleur
return
' ----
prep_lig_color:
el$(2)=str$(couleur(2)):el$(3)=str$(couleur(3)):el$(4)=str$(couleur(4)):' Form
el$(5)=str$(couleur(5)):el$(6)=str$(couleur(6)):el$(7)=str$(couleur(7)):' police
el$(8)=str$(couleur(8)):el$(9)=str$(couleur(9)):el$(10)=str$(couleur(10)):' remplissage
return
' ----
reinit_couleur:
couleur(2)=val(el$(2)):couleur(3)=val(el$(3)):couleur(4)=val(el$(4)):' Form
couleur(5)=val(el$(5)):couleur(6)=val(el$(6)):couleur(7)=val(el$(7)):' police
couleur(8)=val(el$(8)):couleur(9)=val(el$(9)):couleur(10)=val(el$(10)):' remplissage
return
' ------
quit_reglages:
bouton=102:gosub bouton:gosub active_menu
hide 100:hide 120:text 122,""
return
' ================== GESTION DES UTILISATEURS et MOT DE PASSE ==================
saisie_mdp:
show 100:caption 101,"Bienvenue "+el$(2)+",  Saisie de votre mot de passe"
if prov$="start"
  hide 102
else
  on_click 102,quit_saisie_mdp
end_if
show 104:show 105:show 106:secret_on 104:set_focus 104:inactive 105
if el$(4)="O" then mark_on 106:active 105:text 104,el$(3)
set_focus 104:active 105:on_click 105,saisie_mdp2
return
saisie_mdp2:
a$=text$(104)
if a$<>el$(3) then message "      *      MOT DE PASSE INCORECT !      *      ":gosub arret
if checked(106)=1 then el$(4)="O"
if checked(106)=0 then el$(4)="N"
gosub fab_lig_fich:NumLigFich=NumLigSel
gosub save_remplace_lig_fichier
quit_saisie_mdp:
bouton=102:gosub bouton
hide 100:hide 104:secret_off 104:hide 105:hide 106:inactive 105:hide 107
prov$="":goto start3
return
' *******
change_mot:
' change mot et enreg
' ici la ligne de nodl doit être sélectionnée el$(3)=ancien_mot de passe
show 100:caption 101,"Saisie du nouveau mot de passe"
if el$(3)="BONJOUR" then caption 101,"Bienvenue "+el$(2)+", Vous devez saisir un mot de passe pour pouvoir continuer"
if prov$="start"
  hide 102
else
  on_click 102,quit_change_mot
end_if
show 104:show 105:show 106:secret_on 104:set_focus 104:inactive 105
on_change 104,change_mot2
return
change_mot2:
active 105:on_click 105,change_mot3
return
change_mot3:
a$=text$(104)
if len(a$)<3 then message "      *  3 caractères minimum. *      ":goto change_mot
if len(a$)>50 then message "      *  50 caractères maximum. *      ":goto change_mot
a=instr(a$,s$):if a<>0 then message "    *  Ce caractère | est interdit. *  ":goto change_mot
show 107:on_click 107,change_mot4
caption 101," Cliquez sur la disquette pour valider votre saisie ==>"
return
change_mot4:
bouton=107:gosub bouton
if el$(3)="BONJOUR" then message "Vous allez devoir relancer le programme":active 11
el$(3)=a$
if checked(106)=1 then el$(4)="O"
if checked(106)=0 then el$(4)="N"
gosub fab_lig_fich
NumLigFich=NumLigSel
gosub save_remplace_lig_fichier
' return
quit_change_mot:
bouton=107:gosub bouton
hide 100:hide 104:hide 105:mark_off 106:hide 106:secret_off 104:inactive 105:hide 107
return
' ******
sel_utilisateur:
show 100:show 103:caption 101,"Sélectionnez votre identifiant"
if prov$="start"
  hide 102
else
  on_click 102,quit_sel_utilisateur
end_if
nber=2:re(1)=1:re(2)=2:nl=103:gosub sel_lig_fich
' return
quit_sel_utilisateur:
hide 100:clear 103:hide 103:show 102
return
' ******
cre_admin:
gosub bienvenu:on_click nf,cre_admi2
end
return
cre_admi2:
hide nf:show nf
gosub clear_lig_fich
' identifiant
a$=" Tapez votre identifiant  ici."
m=message_input(" IDENTIFIANT ","30 caractères maximum",a$)
if m=0 then message mess_rep_oblig$:goto cre_admi2
a$=message_text$
if a$=" Tapez votre identifiant  ici." then message mess_rep_oblig$:goto cre_admi2
if len(a$)>30 then message "      *  30 caractères maximum. *      ":goto cre_admi2
if len(a$)<3 then message "      *  3 caractères minimum. *      ":goto cre_admi2
el$(2)=upper$(message_text$):el$(1)="01"
' el$(3)="Mot de passe provisoire, el$(4)=(mémorisé)"
cre_admi3:
el$(3)="BONJOUR":el$(4)="O"
gosub fab_lig_fich:gosub save_add_lig_fichier
message "Au redémarrage du programme, vous devez saisir un nouveau mot de passe."
gosub arret
return
' ================================  ROUTINES ===================================
sel_lig_fich:
if nl<1 then message "ERREUR: Le numéro du LIST (nl) n'est pas défini au label sel_lig_fich":terminate
if nber<1 then message "ERREUR: Le nombre d'éléments à rechercher (nber) n'est pas défini au label sel_lig_fich":terminate
gosub afi_liste_elements
on_click nl,compare_lig_fich
' retourne la ligne sélectionnée de fichier$ sous variable a$
end
return
' ----
compare_lig_fich:
h$=item_index$(nl)
for NumLigFich=1 to count(nodl)
  ligsel$=item_read$(nodl,NumLigFich):a$=ligsel$:gosub dec_string
  for r=1 to nber
  if re(r)=r then el_afi$=el_afi$+el$(r)+" "
  next r
  if h$=el_afi$ then NumLigSel=NumLigFich:exit_for
  el_afi$=""
next NumLigFich
nber=0:nl=0
return
' ----
afi_liste_elements:
' le fichier doit être chargé dans le dlist nodl et il faut la liste (nber) des éléments recherchés re(1)...
' ensuite afficher les éléments recherchés dans list nl sous la variable el_afi$
if nber<1 then message "ERREUR: Le nombre d'éléments à rechercher (nber) n'est pas défini au label afi_liste_elements":terminate
el_afi$=""
for NumLigFich=1 to count(nodl)
 gosub dec_lig_fich
  for r=1 to nber
  if re(r)=r then el_afi$=el_afi$+el$(r)+" "
  next r
  item_add nl,el_afi$
  el_afi$=""
next NumLigFich
return
' ******
save_add_lig_fichier:
item_add nodl,lig_fich$:file_save nodl,fichier$:clear nodl:' ajoute lig_fich$ et sauve dans fichier$
return
' *****
save_remplace_lig_fichier:
item_delete nodl,NumLigFich:item_insert nodl,NumLigFich,lig_fich$:file_save nodl,fichier$:clear nodl:' remplace lig_fich$ et sauve dans fichier$
return
' *****
save_sup_lig_fichier:
item_delete nodl,NumLigFich:file_save nodl,fichier$:clear nodl:' efface lig_fich$ et sauve dans fichier$
return
' ******
dec_lig_fich:
if NumLigFich=0 then message "ERREUR: NumLigFich=0 au label dec_lig_fich":terminate
' découpe la ligne NumLigFich du fichier$
a$=item_read$(nodl,NumLigFich):gosub dec_string
return
' *****
dec_string:
if a$="" then message "ERREUR: a$="" au label dec_string":terminate
nba=0:ls=len(a$):a=instr(a$,s$):b$=a$
repeat:' boucle pour compter le nb de s$ dans a$
  ls=ls-a:b$=mid$(b$,a+1,ls):a=instr(b$,s$):nba=nba+1
until a=0:nbe=nba+1
for ne=1 to nba:' boucle de fabrication de el$(ne)
  ls=len(a$):a=instr(a$,s$):el$(ne)=mid$(a$,1,a-1):a$=mid$(a$,a+1,ls):el$(ne+1)=a$
next ne:return
' *****
cre_fichier:
' créer un fichier avec un count à zéro si lig_fich$=""
file_open_write 1,fichier$
if lig_fich$<>"" then file_writeln 1,lig_fich$
file_close 1:lig_fich$=""
return
' *****
fab_lig_fich:
if el$(1)="" then message "ERREUR: el$(1)="" au label fab_lig_fich":terminate
n=1:lig_fich$=el$(n)+"|":' routine de fabrication lig_fich$ (15 éléments)
for n=2 to 14
if el$(n)<>"" then lig_fich$=lig_fich$+el$(n)+"|"
if el$(n)="" then lig_fich$=lig_fich$+el$(n)+"§|"
if n=14 and el$(n)<>"" then lig_fich$=lig_fich$+el$(n)
if n=14 and el$(n)="" then lig_fich$=lig_fich$+"§"
next n
return
' ------
clear_lig_fich:
for n=1 to 15:el$(n)="":next n
return
' ******
bouton:
if active(bouton)=0 or show(bouton)=0 or clicked(bouton)=0 then return
x=top(bouton):y=left(bouton)
top bouton,x+2:left bouton,y+2
wait 100
top bouton,x:left bouton,y
return
' ================================ INSTALLATION ================================
install:
' créer le fichier utilisateur
fichier$=fut$:gosub cre_fichier
' créer le fichier code
fichier$=ficod$:gosub cre_fichier
return
' ***** création des FORM(s)
cre_form_nf:
form nf:command_target_is nf:print_target_is nf
width nf,lnf:height nf,hnf
top nf,int((screen_y-height(nf))/2):left nf,int((screen_x-width(nf))/2)
caption nf,caption_nf$
hide nf
return
' ================================== MESSAGE ===================================
bienvenu:
font_bold nf:font_size nf,10
print:print
print:print string$(70," ")+" BONJOUR: Bienvenue pour la mise en place du logiciel."
print:print:print:print
print:print string$(30," ")+" Vous êtes le premier utilisateur, à ce titre vous serez l'ADMINISTRATEUR de ce logiciel."
print:print string$(30," ")+" L'ADMINISTRATEUR a le pouvoir de gérer les inscriptions ou radiations des autres utilisateurs."
print:print
print:print string$(30," ")+" Pour commencer le programme vous demandera de choisir un IDENTIFIANT."
print:print string$(30," ")+" CONSEIL: ........"
print:print string$(30," ")+" Ne pas dépasser 30 caractères, (transformation automatique en majuscule)"
print:print
print:print string$(30," ")+" Préparez votre MOT DE PASSE."
print:print string$(30," ")+" REMARQUE: ......."
print:print string$(30," ")+" Minimum 6 caractères, ne pas dépasser 50 caractères,"
print:print string$(30," ")+" tout les caractères du clavier son acceptés sauf | , vous pouvez utiliser majuscule ou minuscule à votre guise."
print:print string$(30," ")+" Si vous le souhaitez vous pourez choisir l'option 'mémoriser mon mot de passe'"
print:print
print:print string$(30," ")+" Ensuite le programme s'arrêtera, vous devrez le relancer et saisir votre mot de passe."
print:print
print:print string$(30," ")+" REMARQUE: ......."
print:print:print
print:print string$(80," ")+" CLIQUEZ N'IMPORTE OU POUR CONTINUER"
return
' ================================== SORTIE ====================================
arret:
message "Le programme doit s'arrêter maintenant"
fin:
terminate

Merci d'avance. A+


Dernière édition par Jean Claude le Jeu 19 Avr 2012 - 18:58, édité 1 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 16:20

Je viens de faire un essai en partant du forum et çà marche pas !

En fait, il faut obligatoirement créer un dossier et enregistrer le "fichier.bas" dedans et là ça marche

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 17:03

OK Jean-Claude, je teste ce soir en rentrant chez moi (après manger ...)
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 17:28

Salut Jean-Claude.
J’ai testé ton programme sans créer de dossier et ça a marché !
J’ai suivi les indications du programme jusqu’à : « Cliquez sur le bouton X de la fenêtre et réglez largeur, hauteur, puis sauvegardez »
En dessous, il est écris 1024 x 768.
Mais je ne sais pas comment faire pour modifier ces valeurs.
Mon système d’exploitation est : Microsoft Windows XP Professionnel.

PS : Je garde le programme pour moi comme promis.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
sergeauze

sergeauze


Nombre de messages : 391
Age : 71
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

Base pour un programme de gestion Empty
MessageSujet: re:Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 18:10

salut à vous tous
J'ai testé ,et je n'ai aucun commentaire à faire:
ça fonctionne!
je suis sous Vista
Resolution 1680 par 1050
Bonne continuation
Revenir en haut Aller en bas
http://sergeauze.blog-video.tv/
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 19:06

Merci pour vos réponses,

@Papydall
tu redimensionne la fenêtre manuellement (méthode Windows) et tu re_cliques sur X pour que les objets se repositionnent et si ça te plais tu enregistres,sinon tu recommences autant de fois que nécessaire.


Notez que je viens de rééditer le source (il y avait une erreur dans la sélection des utilisateurs)


Bon je reviens plus tard, çà crie dans la salle à manger......


A+
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 20:05

J’ai redimensionné la fenêtre et ça marche.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 20:22

@Papydall,

Ton cas est particulier car la taille de ton écran est la taille minimum que j'ai réservé à ce programme. Donc tu ne peux pas diminuer (le programme ne l'autorise pas), mais je serais intéressé de savoir si tu arrives à agrandir.

si tu veux le reprendre pour toi il faut que tu supprimes ces 2 lignes au label dim_form:
Code:
if lnf<1024 then message "dimension minimum 1024 x 768":return
if hnf<768 then message "dimension minimum 1024 x 768":return
et ensuite tu changes les valeurs lnf et hnf de cette ligne au label gui:
Code:
nf=1:lnf=1024:hnf=768:' taille minimum de la fenêtre
Et après tu doit changer les valeurs de cette ligne par défaut au label cre_param
Code:
el$(11)="1024":el$(12)="768"

A+

PS: on s'est croisé
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 20:23

Bon, au redimensionnement, si je laisse le programme au dessus de ma barre des tâche (visible), j'ai le message: Non du Prog: Message
dimension minimum 1024 x 768
=> Du coup j'ai masqué la barre de tâche et je me suis mis en plein écran.
Là pas de problème, tout est bon. La dimension retenue est 1382 x 784
Système: W7
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 20:32

OK Jicehel, et merci pour ta réponse.
Le comportement du programme semble être correct. Je n'avais pas prévu la barre des taches car la mienne se masque automatiquement.
Je vais donc diminué la taille mini acceptée pour la hauteur car c'est moins gênant pour ce que je projette de faire.
Mais je me demande quelle est le height de la barre des tâches sous W7.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 20:43

Elle fait 40 points à priori, j'ai baissé la taille mini comme tu as expliqué à Papydall et je me suis mis juste au dessus et il m'affiche 1368 x 729
Par contre un petit "bug", je pense, quand je clic sur appliquer, il me baisse la fenêtre un peu (d'une vingtaine de points peut_être ...) et même si je remonte la fenêtre avant de sauvegarder, il me la remet à la même hauteur à la réouverture.
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 21:18

Bien présenté et prometteur (je ne me vois pas d'application pour le moment, mais ça peut changer).
En tout cas chez moi pas de problème, sous W7, écran de 1920x1200.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 21:22

Lorsque j’agrandis la fenêtre j’obtiens 1032 x 742.
Puis j’ai modifié le code comme tu as indiqué et là je peux diminuer la fenêtre jusqu’à moins de 300 x 250 et quand j’agrandis la fenêtre, j’obtiens encore 1032 x 742.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyJeu 19 Avr 2012 - 21:29

Juste une petite remarque, histoire de pinailler: le mot de passe est en clair dans le fichier fut$, donc facilement accessible.
Une autre petite remarque (encore plus petite): pour le réglage Luminosité, j'aurais mieux vu le + à droite et le - à gauche, c'est une idée que je me fais ? (en tout cas c'est une broutille).

Tiens, un petit s/p pour coder ou décoder un mot de passe (c'est réversible):
Code:
Codec:
b$ = "": DIM ic%: ' codage/décodage de a$ -> b$
FOR ic% = 1 TO LEN(a$)
    b$=b$+CHR$(BIN_XOR(ASC(MID$(a$,ic%,1)),200-ic%*2))
NEXT ic%: FREE ic%
RETURN
comme il n'y a pas de clé de codage/décodage en clair, ça ne serait pas facile à pirater dans un programme compilé.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 8:00

Je vous remercie tous de m'aider sur ce coup, grâce à vos remarques je vais pouvoir réajuster.


@Jicehel, le bug dont tu parles n'est pas un bug. Ce qui se produit c'est un recentrage automatique de la fenêtre sur l'écran. L'utilisateur peut toujours la déplacer manuellement.

@Papidall, j'ai prévu des limites minimum car le programme que je veux faire doit présenter des GRID qui ont besoin d'un minimum de colonnes. Pour d'autres utilisations, il faut changer les paramètres comme tu l'as fait.

@Papinailleur35 Very Happy , ta remarque sur la luminosité (j'ai pas trouvé d'autres termes) est judicieuse.
Je te remercie pour ton petit code de cryptage que je vais l'intégrer. J'avais pensé pouvoir cacher les fichiers dans le dossier, mais j'ai pas trouvé comment.

Je vais donc:
1) diminuer le "height" minimum de la fenêtre de 50 points
2) changer les positions + et - du réglage de luminosité
3) intégrer le cryptage du mot de passe


J'ai besoin d'aide sur 1 point:
Je voudrais qu'au premier lancement du programme il y ai création automatique d'un dossier pour y stocker les fichiers. j'ai fait pas mal d'essais avec les commandes DIR_.... mais je n'y arrive pas.


A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 10:27

Voici la version revu et corrigée,

les +:
affichage direct de la taille de l'écran à l'utilisation des boutons "plein écran" et "taille minimum"
Possibilité d'inscrire d'autres utilisateurs (Remarque: ils n'auront pas accès au menu administrateur, je verrais par la suite pour donner des autorisations)
Insertion du code de JL35 pour cryptage du mot de passe dans le fichier utilisateur

Les modifs:
inversion de + et - pour le réglage de luminosité
nouvelle hauteur mini de la fenêtre à 718 (ce qui laisse la place à la barre des taches)

Pour que cette nouvelle version fonctionne vous devez éliminer les 3 fichiers existants (commençant par cf)

Code:
' code base de dépard pour logiciel de gestion


hide 0
label dims,labels,gui,init_dims:gosub labels:gosub dims:gosub init_dims:gosub gui
display
END
' =============================== PROGRAMME ====================================
operations:
end
return
' ================================== GUI =======================================
gui:
' form 1
nf=1:lnf=1024:hnf=718:' taille minimum de la fenêtre
gosub cre_form_nf:show nf:gosub main_menu10:on_close nf,fin
no=100:container no:height no,50:top no,10:hide no
no=101:alpha no:parent no,100:width no,width(100)-20:top no,18:left no,10
font_bold no:font_name no,"Arial":font_size no,11
no=102:alpha no:parent no,100:width no,20:top no,16:font_bold no
font_name no,"Wingdings 3":font_size no,14:caption no,chr$(82):hint no," Quitter "
no=107:alpha no:parent no,100:width no,20:top no,16:font_bold no
font_name no,"Wingdings":font_size no,14:caption no,chr$(60):hint no," Enregistrer ":hide no
' utilisateurs
no=103:list no:width no,300:height no,185:font_bold no:font_name no,"Arial":font_size no,11:hide no
no=104:edit no:width no,430:height no,20:font_bold no:font_name no,"Arial":font_size no,11:hide no
no=105:button no:width no,20:height no,20:font_bold no:font_name no,"Arial":font_size no,11:caption no,"X":hide no
no=106:check no:width no,300:height no,20:caption no," Mémoriser le mot de passe "
font_bold no:font_name no,"Arial":font_size no,11:hide no
' no 108 à 119
' réglages
no=120:container no:width no,365:height no,500:top no,100:left no,int(width(nf)/2)-int(width(no)/2):hide no
no=121:alpha no:parent no,120:top no,20:left no,20:caption no,"Thèmes                        Fenêtre et Remplissage":font_bold no:font_name no,"Arial":font_size no,11
no=122:combo no:parent no,120:top no,40:left no,20:font_bold no:font_name no,"Arial":font_size no,11
item_add no,"Gris":item_add no,"Bleu":item_add no,"Marron":item_add no,"Vert"
no=123:alpha no:parent no,120:top no,46:left no,210:caption no,"- Luminosité +":font_bold no:font_name no,"Arial":font_size no,11
no=124:alpha no:parent no,120:top no,42:left no,185:caption no,chr$(55):font_bold no:font_name no,"Webdings":font_size no,14
no=125:alpha no:parent no,120:top no,42:left no,315:caption no,chr$(56):font_bold no:font_name no,"Webdings":font_size no,14
no=126:container no:parent no,120:width no,325:height no,160:top no,100:left no,20
font_bold no:font_name no,"Arial":caption no,"  Réglages avancés des couleurs  "
no=127:option no:parent no,126:width no,150:top no,40:left no,10:caption no," Couleurs de la fenêtre "
no=128:option no:parent no,126:width no,165:top no,80:left no,10:caption no," Couleurs de remplissage "
no=129:option no:parent no,126:width no,150:top no,120:left no,10:caption no," Couleurs de la police "
no=130:alpha no:parent no,126:top no,15:left no,245:caption no," -      +":font_bold no:font_name no,"Arial":font_size no,14
no=131:alpha no:parent no,126:top no,45:left no,250:inactive no
color no,255,200,200:font_name no,"Marlett":caption no,chr$(100):hint no," Rouge - "
no=132:alpha no:parent no,126:top no,45:left no,290:inactive no
color no,255,0,0:font_name no,"Marlett":caption no,chr$(100):hint no," Rouge + "
no=133:alpha no:parent no,126:top no,85:left no,250:inactive no
color no,200,255,200:font_name no,"Marlett":caption no,chr$(100):hint no," Vert - "
no=134:alpha no:parent no,126:top no,85:left no,290:inactive no
color no,0,255,0:font_name no,"Marlett":caption no,chr$(100):hint no," Vert + "
no=135:alpha no:parent no,126:top no,125:left no,250:inactive no
color no,150,200,255:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu - "
no=136:alpha no:parent no,126:top no,125:left no,290:inactive no
color no,0,0,255:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu + "
' palette
no=137:container no:parent no,120:width no,175:height no,180:top no,280:left no,20
font_bold no:font_name no,"Arial":caption no,"  Palette de couleurs  "
no=138:alpha no:parent no,137:top no,30:left no,20:inactive no
color no,0,0,0:font_name no,"Marlett":caption no,chr$(100):hint no," Noir "
no=139:alpha no:parent no,137:top no,30:left no,60:inactive no
color no,100,100,100:font_name no,"Marlett":caption no,chr$(100):hint no," Gris Foncé "
no=140:alpha no:parent no,137:top no,30:left no,100:inactive no
color no,200,200,200:font_name no,"Marlett":caption no,chr$(100):hint no," Gris Clair "
no=141:alpha no:parent no,137:top no,30:left no,140:inactive no
color no,255,255,255:font_name no,"Marlett":caption no,chr$(100):hint no," Blanc "
no=142:alpha no:parent no,137:top no,60:left no,20:inactive no
color no,255,0,0:font_name no,"Marlett":caption no,chr$(100):hint no," Rouge Standard "
no=143:alpha no:parent no,137:top no,60:left no,60:inactive no
color no,255,100,100:font_name no,"Marlett":caption no,chr$(100):hint no," Orange "
no=144:alpha no:parent no,137:top no,60:left no,100:inactive no
color no,255,150,150:font_name no,"Marlett":caption no,chr$(100):hint no," Rose Soutenu "
no=145:alpha no:parent no,137:top no,60:left no,140:inactive no
color no,255,200,200:font_name no,"Marlett":caption no,chr$(100):hint no," Rose clair "
no=146:alpha no:parent no,137:top no,90:left no,20:inactive no
color no,0,255,0:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Standard "
no=147:alpha no:parent no,137:top no,90:left no,60:inactive no
color no,100,255,100:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Clair "
no=148:alpha no:parent no,137:top no,90:left no,100:inactive no
color no,150,255,150:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Très Clair "
no=149:alpha no:parent no,137:top no,90:left no,140:inactive no
color no,200,255,200:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Très Très Clair "
no=150:alpha no:parent no,137:top no,120:left no,20:inactive no
color no,0,100,0:font_name no,"Marlett":caption no,chr$(100):hint no," Vert Foncé "
no=151:alpha no:parent no,137:top no,120:left no,60:inactive no
color no,200,150,50:font_name no,"Marlett":caption no,chr$(100):hint no," Ocre "
no=152:alpha no:parent no,137:top no,120:left no,100:inactive no
color no,255,255,0:font_name no,"Marlett":caption no,chr$(100):hint no," Jaune "
no=153:alpha no:parent no,137:top no,120:left no,140:inactive no
color no,100,150,150:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu-Vert "
no=154:alpha no:parent no,137:top no,150:left no,20:inactive no
color no,0,0,255:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu Standard "
no=155:alpha no:parent no,137:top no,150:left no,60:inactive no
color no,50,150,255:font_name no,"Marlett":caption no,chr$(100):hint no," Bleu Clair "
no=156:alpha no:parent no,137:top no,150:left no,100:inactive no
color no,200,150,255:font_name no,"Marlett":caption no,chr$(100):hint no," Mauve "
no=157:alpha no:parent no,137:top no,150:left no,140:inactive no
color no,255,0,255:font_name no,"Marlett":caption no,chr$(100):hint no," Violet "
no=158:container no:parent no,120:width no,145:height no,180:top no,280:left no,200
font_bold no:font_name no,"Arial":caption no,"  Fenêtre  "
no=159:alpha no:parent no,158:top no,20:width no,100:left no,2
caption no,"Cliquez sur le bouton X"+nl$+" de la fenêtre et règlez"+nl$+"    largeur, hauteur,"+nl$+"    Puis sauvegardez":font_bold no:font_name no,"Arial":font_size no,8
no=160:alpha no:parent no,158:width no,20:top no,90:left no,80:font_bold no
font_name no,"Wingdings":font_size no,14:caption no,chr$(60):hint no," Enregistrer "
no=161:alpha no:parent no,158:width no,20:top no,90:left no,40:font_bold no
font_name no,"Wingdings":font_size no,12:caption no,chr$(203):hint no," Appliquer les dimensions "
no=162:alpha no:parent no,158:top no,160:width no,100:left no,5:font_bold no:font_name no,"Arial":font_size no,8
no=163:alpha no:parent no,158:width no,20:top no,120:left no,80:font_bold no
font_name no,"Marlett":font_size no,14:caption no,chr$(50):hint no," Dimension Minimum "
no=164:alpha no:parent no,158:width no,20:top no,122:left no,40:font_bold no
font_name no,"Marlett":font_size no,12:caption no,chr$(49):hint no," Plein écran "


' dlist
dlist 90:' contient l' Utilisateur (et paramètres au lancement)
dlist 91:' contient le fichier code (ficod$="cfw_codes_op.jjc")
' width 90,500
return
' =========================== GESTION des PARAMETRES ===========================
init_param:
' charger le fichier paramètre et initialiser les variables concernées
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich
nb_lig_grid=val(el$(1)):lnf=val(el$(11)):hnf=val(el$(12))
' ....
' *******
aplic_color:
' couleur du fond des Forms
rouge=el$(2):vert=el$(3):bleu=el$(4)
nf=1:color nf,rouge,vert,bleu

' couleurs des polices des Objets
rouge=el$(5):vert=el$(6):bleu=el$(7)
no=101:font_color no,rouge,vert,bleu:' alpha
no=102:font_color no,rouge,vert,bleu:' bouton quiter
for no=106 to 107:font_color no,rouge,vert,bleu:next no:' case à cocher et disquette enreg
for no=121 to 125:font_color no,rouge,vert,bleu:next no:' règlage thèmes et luminosité
for no=160 to 164:font_color no,rouge,vert,bleu:next no:' règlage dimensions form

' couleur de fond (REMPLISSAGE) des list, edit, combo
rouge=el$(8):vert=el$(9):bleu=el$(10)
no=103:color no,rouge,vert,bleu:' list
no=104:color no,rouge,vert,bleu:' edit
no=122:color no,rouge,vert,bleu:' comb
' ....
display
return
' ********
aplic_redim_form_obj:
' RE_dimension des Forms et objets
width nf,lnf:height nf,hnf:top nf,int((screen_y-height(nf))/2):left nf,int((screen_x-width(nf))/2)
a=int(width(nf)/18)-len(ut$):caption nf,caption_nf$+string$(a," ")+ut$+string$(a," ")+date$
no=100:width no,lnf-30:left no,int(width(nf)/2)-int(width(no)/2)-4
no=102:left no,width(nf)-60:no=107:left no,width(nf)-100
no=103:top no,int((height(nf)/2)-30)-int(height(no)/2):left no,int(width(nf)/2)-int(width(no)/2)
no=104:top no,int((height(nf)/2)-30)-int(height(no)/2):left no,int(width(nf)/2)-int(width(no)/2)
no=105:top no,int((height(nf)/2)-30)-int(height(no)/2):left no,(int(width(nf)/2)-int(width(no)/2))+(int(width(104)/2)-13)
no=106:top no,int((height(nf)/2)+60)-int(height(no)/2):left no,int(width(nf)/2)-int(width(no)/2)
no=120:left no,int(width(nf)/2)-int(width(no)/2)
' ....
return
' =============================  DIM et LABEL ==================================
labels:
label operations:' operations
label fin,arret,cre_form_nf,aplic_redim_form_obj,main_menu10,start,start2,start3,cre_param,install:' init prog
label cre_admin,bienvenu,cre_admi2,cre_admi3,sel_utilisateur,init_param:' init prog
label quit_sel_utilisateur,change_mot,quit_change_mot,change_mot2,change_mot3,change_mot4:' init prog
label saisie_mdp,quit_saisie_mdp,saisie_mdp2,bouton,reglages,quit_reglages:' init prog
label inactive_menu,active_menu,theme,th_gris,aplic_color,th_bleu,th_marron,th_vert:' init prog
label lumin+,lumin-,couleur_avance,reinit_couleur,rouge-,vert-,bleu-,rouge+,vert+,bleu+:' init prog
label prep_lig_color,save_lig_param_remp,noir,palette,Gris_Fonce,Gris_Clair,blanc:' init prog
label mark_off_choix,rougestd,orange,roseS,roseC,vertstd,vertC,vertTC,vertTTC,vertF:' init prog
label Ocre,jaune,bleu_vert,bleustd,bleuC,mauve,violet,enreg_dim_form,dim_form,plein_ecran:' init prog
label ecran_mini,new_utilisateur,clear_lig_fich,quit_new_utilisateur,new_util,new_util1:' init prog
label new_util2,enreg_new_util,Codec:' init prog
label save_add_lig_fichier,afi_liste_elements,fab_lig_fich,cre_fichier,fab_string:' Gestion fichier et string
label dec_lig_fich,dec_string,sel_lig_fich,compare_lig_fich,save_remplace_lig_fichier,save_sup_lig_fichier
return
' *****
dims:
dim a$,b$,c$,d$,e$,f$,g$,h$:' dim string généraliste
dim a,b,c,d,e,f,g,h,n,m,p,po,r,v,x,y:' dim réelle généraliste
dim nf,no,nodl,nba,nbc,nbe,nber,ne,nl,ls,lnf,hnf,bouton:' dim numérique pour routines
dim cav$,nl$,s$:' dim alphanumériques pour routines
dim fp$,lig_fich$,el_afi$,fichier$,fut$,fcpt$,ficod$,NumLigFich,NumLigSel,ligsel$:' les fichiers
dim re(15),el$(15),couleur(15):' dim tableaux
dim nb_lig_grid,mess_rep_oblig$,caption_nf$,prov$,rouge,vert,bleu:' dim gui, param, message
dim nut$,ut$:' dim utilisateurs
return
' *****
init_dims:
fp$="cfx_param_gen.jjc"
fut$="cfw_utilisateurs.jjc"
ficod$="cfw_codes_op.jjc"
APPLICATION_TITLE "Nom du Prog: Message"
s$="|":nl$=chr$(13)+chr$(10)
mess_rep_oblig$="      *  Réponse Obligatoire  *      "
caption_nf$=" NOM DU PROG"
return
' ================================ MAIN_MENU 10 ================================
main_menu10:
main_menu 10
sub_menu 11:parent 11,10:caption 11," Fichier "
  sub_menu 12:parent 12,11:caption 12," Ouvrir ":on_click 12,start
  sub_menu 13:parent 13,11:caption 13," Quitter ":on_click 13,fin
sub_menu 20:parent 20,10:caption 20," Opérations ":on_click 20,operations:inactive 20

sub_menu 80:parent 80,10:caption 80," Administrateur ":hide 80
  sub_menu 81:parent 81,80:caption 81," Inscrire un nouvel utilisateur ":on_click 81,new_utilisateur

sub_menu 89:parent 89,10:caption 89," Réglages ":on_click 89,reglages:inactive 89

return
' *****
inactive_menu:
inactive 11:inactive 20:inactive 80:inactive 89
return
active_menu:
' gestion de main_menu 10
if nut$="01" then show 80:' (menu administrateur)
active 11:active 20:active 80:active 89
' désactive si pas les fichiers
nodl=91:fichier$=ficod$:clear nodl:file_load nodl,fichier$:if count(nodl)=0 then inactive 20:' (menu operation)
return
' ================================ START =======================================
start:
inactive 12:' (Menu ouvrir)
inactive 11:' (Menu fichier)
prov$="start"
nf=1:show nf:on_close nf,fin
' paramètres
fichier$=fp$:if file_exists(fichier$)=0 then gosub cre_param:gosub install:' crée les fichiers vides
gosub init_param:gosub aplic_redim_form_obj
' charger le fichier utilisateur et procéder à la sélection (ou crée l'administrateur, si première utilisation)
nodl=90:fichier$=fut$:clear nodl:file_load nodl,fichier$
if count(nodl)=0 then gosub cre_admin
gosub sel_utilisateur:a$=ligsel$:gosub dec_string
' vérifie que utilisateur sélectionné a un mot de passe <> BONJOUR, sinon on change le mot
a$=el$(3):gosub Codec:el$(3)=b$
if el$(3)="BONJOUR" then gosub change_mot
nut$=el$(1):ut$=el$(2):' dim utilisateurs à garder pendant le déroulement du prog
a=int(width(nf)/18)-len(ut$):caption nf,caption_nf$+string$(a," ")+ut$+string$(a," ")+date$
if el$(3)<>"BONJOUR" then goto start2
end
return
start2:
gosub saisie_mdp:' saisir le mot de passe
end
return
start3:
gosub active_menu
return
' ============================== Sous-prog Param ===============================
cre_param:
' seulement au premier lancement
el$(1)="50":' nombre de ligne du grid 1
el$(2)="210":el$(3)="225":el$(4)="240":' couleur de fond de Form
el$(5)="0":el$(6)="0":el$(7)="255":' couleur des polices
el$(8)="235":el$(9)="245":el$(10)="255":' couleur de fond  list, edit, combo
el$(11)="1024":el$(12)="718"
gosub fab_lig_fich:gosub cre_fichier
return
' *********
reglages:
gosub inactive_menu:show 100:caption 101,"Réglage des paramètres dimensions et couleurs"
show 120:show 102:on_click 102,quit_reglages:nodl=90:fichier$=fp$:clear nodl
file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich:gosub reinit_couleur
on_click 122,theme:on_click 125,lumin+:on_click 124,lumin-
on_click 127,couleur_avance:on_click 128,couleur_avance:on_click 129,couleur_avance
on_click 160,enreg_dim_form:on_click 161,dim_form:on_click 164,plein_ecran:on_click 163,ecran_mini:inactive 160
if lnf=>screen_x and hnf=>screen_y then inactive 164
if lnf<=1024 and hnf<=718 then inactive 163
return
' *********
dim_form:
bouton=161:gosub bouton:active 160:active 164
lnf=width(nf):hnf=height(nf)
caption 162,str$(lnf)+" X "+str$(hnf)
if lnf<1024 then message "dimension minimum 1024 x 718":return
if hnf<718 then message "dimension minimum 1024 x 718":return
gosub aplic_redim_form_obj
return
' ----
enreg_dim_form:
bouton=160:gosub bouton:inactive 160
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich
el$(11)=str$(lnf):el$(12)=str$(hnf)
gosub fab_lig_fich:gosub save_remplace_lig_fichier
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1
gosub dec_lig_fich
lnf=val(el$(11)):hnf=val(el$(12))
return
' ----
ecran_mini:
bouton=163:gosub bouton:inactive 163:active 160:active 164
lnf=1024:hnf=718:gosub aplic_redim_form_obj
caption 162,str$(lnf)+" X "+str$(hnf)
return
' ----
plein_ecran:
bouton=164:gosub bouton:inactive 164:active 160:active 163
lnf=screen_x:hnf=screen_y:gosub aplic_redim_form_obj
caption 162,str$(lnf)+" X "+str$(hnf)
return
' ******
couleur_avance:
for n=131 to 136:active n:next n:for n=138 to 157:active n:next n
on_click 120,mark_off_choix:on_click 126,mark_off_choix
on_click 131,rouge-:on_click 133,vert-:on_click 135,bleu-:on_click 132,rouge+
on_click 134,vert+:on_click 136,bleu+:on_click 138,noir:on_click 139,Gris_Fonce
on_click 140,Gris_Clair:on_click 141,blanc:on_click 142,rougestd:on_click 143,orange
on_click 144,roseS:on_click 145,roseC:on_click 146,vertstd:on_click 147,vertC
on_click 148,vertTC:on_click 149,vertTTC:on_click 150,vertF:on_click 151,Ocre
on_click 152,jaune:on_click 153,bleu_vert:on_click 154,bleustd:on_click 155,bleuC
on_click 156,mauve:on_click 157,violet
return
' ----
violet:
bouton=157:gosub bouton:r=255:v=0:b=255:gosub palette:return
' ----
mauve:
bouton=156:gosub bouton:r=200:v=150:b=255:gosub palette:return
' ----
bleuC:
bouton=155:gosub bouton:r=50:v=150:b=255:gosub palette:return
' ----
bleustd:
bouton=154:gosub bouton:r=0:v=0:b=255:gosub palette:return
' ----
bleu_vert:
bouton=153:gosub bouton:r=100:v=150:b=150:gosub palette:return
' ----
jaune:
bouton=152:gosub bouton:r=255:v=255:b=0:gosub palette:return
' ----
Ocre:
bouton=151:gosub bouton:r=200:v=150:b=50:gosub palette:return
' ----
vertF:
bouton=150:gosub bouton:r=0:v=100:b=0:gosub palette:return
' ----
vertTTC:
bouton=149:gosub bouton:r=200:v=255:b=200:gosub palette:return
' ----
vertTC:
bouton=148:gosub bouton:r=150:v=255:b=150:gosub palette:return
' ----
vertC:
bouton=147:gosub bouton:r=100:v=255:b=100:gosub palette:return
' ----
vertstd:
bouton=146:gosub bouton:r=0:v=255:b=0:gosub palette:return
' ----
roseC:
bouton=145:gosub bouton:r=255:v=200:b=200:gosub palette:return
' ----
roseS:
bouton=144:gosub bouton:r=255:v=150:b=150:gosub palette:return
' ----
orange:
bouton=143:gosub bouton:r=255:v=100:b=100:gosub palette:return
' ----
rougestd:
bouton=142:gosub bouton:r=255:v=0:b=0:gosub palette:return
' ----
blanc:
bouton=141:gosub bouton:r=255:v=255:b=255:gosub palette:return
' ----
Gris_Clair:
bouton=140:gosub bouton:r=200:v=200:b=200:gosub palette:return
' ----
Gris_Fonce:
bouton=139:gosub bouton:r=100:v=100:b=100:gosub palette:return
' ----
noir:
bouton=138:gosub bouton:r=0:v=0:b=0:gosub palette:return
' -----
palette:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=138 to 157:inactive n:next n
if checked(127)=1
couleur(2)=r:el$(2)=str$(couleur(2)):couleur(3)=v:el$(3)=str$(couleur(3)):couleur(4)=b:el$(4)=str$(couleur(4))
end_if
if checked(129)=1
couleur(5)=r:el$(5)=str$(couleur(5)):couleur(6)=v:el$(6)=str$(couleur(6)):couleur(7)=b:el$(7)=str$(couleur(7))
end_if
if checked(128)=1
couleur(8)=r:el$(8)=str$(couleur(8)):couleur(9)=v:el$(9)=str$(couleur(9)):couleur(10)=b:el$(10)=str$(couleur(10))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich:gosub reinit_couleur
active 124:active 125:set_focus 120
mark_off_choix:
for n=131 to 136:inactive n:next n:for n=138 to 157:inactive n:next n
mark_off 127:mark_off 128:mark_off 129
return

vert+:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=134:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(3)=couleur(3)+5:if couleur(3)>250 then couleur(3)=255:inactive 134
el$(3)=str$(couleur(3))
end_if
if checked(128)=1
couleur(9)=couleur(9)+5:if couleur(9)>250 then couleur(9)=255:inactive 134
el$(9)=str$(couleur(9))
end_if
if checked(129)=1
couleur(6)=couleur(6)+5:if couleur(6)>250 then couleur(6)=255:inactive 134
el$(6)=str$(couleur(6))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ----
bleu+:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=136:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(4)=couleur(4)+5:if couleur(4)>250 then couleur(4)=255:inactive 136
el$(4)=str$(couleur(4))
end_if
if checked(128)=1
couleur(10)=couleur(10)+5:if couleur(10)>250 then couleur(10)=255:inactive 136
el$(10)=str$(couleur(10))
end_if
if checked(129)=1
couleur(7)=couleur(7)+5:if couleur(7)>250 then couleur(7)=255:inactive 136
el$(7)=str$(couleur(7))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ----
rouge+:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=132:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(2)=couleur(2)+5:if couleur(2)>250 then couleur(2)=255:inactive 132
el$(2)=str$(couleur(2))
end_if
if checked(128)=1
couleur(8)=couleur(8)+5:if couleur(8)>250 then couleur(8)=255:inactive 132
el$(8)=str$(couleur(8))
end_if
if checked(129)=1
couleur(5)=couleur(5)+5:if couleur(5)>250 then couleur(5)=255:inactive 132
el$(5)=str$(couleur(5))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ----
bleu-:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=135:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(4)=couleur(4)-5:if couleur(4)<5 then couleur(4)=0:inactive 135
el$(4)=str$(couleur(4))
end_if
if checked(128)=1
couleur(10)=couleur(10)-5:if couleur(10)<5 then couleur(10)=0:inactive 135
el$(10)=str$(couleur(10))
end_if
if checked(129)=1
couleur(7)=couleur(7)-5:if couleur(7)<5 then couleur(7)=0:inactive 135
el$(7)=str$(couleur(7))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ----
vert-:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=133:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(3)=couleur(3)-5:if couleur(3)<5 then couleur(3)=0:inactive 133
el$(3)=str$(couleur(3))
end_if
if checked(128)=1
couleur(9)=couleur(9)-5:if couleur(9)<5 then couleur(9)=0:inactive 133
el$(9)=str$(couleur(9))
end_if
if checked(129)=1
couleur(6)=couleur(6)-5:if couleur(6)<5 then couleur(6)=0:inactive 133
el$(6)=str$(couleur(6))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' -----
rouge-:
if checked(127)=0 and checked(128)=0 and checked(129)=0 then for n=131 to 136:inactive n:next n
bouton=131:gosub bouton:for n=131 to 136:active n:next n
if checked(127)=1
couleur(2)=couleur(2)-5:if couleur(2)<5 then couleur(2)=0:inactive 131
el$(2)=str$(couleur(2))
end_if
if checked(128)=1
couleur(8)=couleur(8)-5:if couleur(8)<5 then couleur(8)=0:inactive 131
el$(8)=str$(couleur(8))
end_if
if checked(129)=1
couleur(5)=couleur(5)-5:if couleur(5)<5 then couleur(5)=0:inactive 131
el$(5)=str$(couleur(5))
end_if
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp
return
' ******
lumin+:
bouton=125:gosub bouton:active 124
couleur(2)=couleur(2)+5:if couleur(2)>250 then couleur(2)=255:inactive 125
el$(2)=str$(couleur(2))
couleur(3)=couleur(3)+5:if couleur(3)>250 then couleur(3)=255:inactive 125
el$(3)=str$(couleur(3))
couleur(4)=couleur(4)+5:if couleur(4)>250 then couleur(4)=255:inactive 125
el$(4)=str$(couleur(4))
couleur(8)=couleur(8)+5:if couleur(8)>250 then couleur(8)=255:inactive 125
el$(8)=str$(couleur(8))
couleur(9)=couleur(9)+5:if couleur(9)>250 then couleur(9)=255:inactive 124
el$(9)=str$(couleur(9))
couleur(10)=couleur(10)+5:if couleur(10)>250 then couleur(10)=255:inactive 125
el$(10)=str$(couleur(10))
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp:nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1
gosub dec_lig_fich:gosub reinit_couleur:mark_off 127:mark_off 128:mark_off 129:active 124:active 125:set_focus 120
for n=131 to 136:inactive n:next n:for n=138 to 157:inactive n:next n
return
lumin-:
bouton=124:gosub bouton:active 125
couleur(2)=couleur(2)-5:if couleur(2)<5 then couleur(2)=0:inactive 124
el$(2)=str$(couleur(2))
couleur(3)=couleur(3)-5:if couleur(3)<5 then couleur(3)=0:inactive 124
el$(3)=str$(couleur(3))
couleur(4)=couleur(4)-5:if couleur(4)<5 then couleur(4)=0:inactive 124
el$(4)=str$(couleur(4))
couleur(8)=couleur(8)-5:if couleur(8)<5 then couleur(8)=0:inactive 124
el$(8)=str$(couleur(8))
couleur(9)=couleur(9)-5:if couleur(9)<5 then couleur(9)=0:inactive 124
el$(9)=str$(couleur(9))
couleur(10)=couleur(10)-5:if couleur(10)<5 then couleur(10)=0:inactive 124
el$(10)=str$(couleur(10))
gosub aplic_color:gosub prep_lig_color:gosub save_lig_param_remp:nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1
gosub dec_lig_fich:gosub reinit_couleur:mark_off 127:mark_off 128:mark_off 129:active 124:active 125:set_focus 120
for n=131 to 136:inactive n:next n:for n=138 to 157:inactive n:next n
return
theme:
mark_off 127:mark_off 128:mark_off 129
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1:gosub dec_lig_fich
a$=text$(122)
if a$="Gris" then gosub th_gris
if a$="Bleu" then gosub th_bleu
if a$="Marron" then gosub th_marron
if a$="Vert" then gosub th_vert
save_lig_param_remp:
gosub fab_lig_fich:gosub save_remplace_lig_fichier
nodl=90:fichier$=fp$:clear nodl:file_load nodl,fichier$:NumLigFich=1
gosub dec_lig_fich:gosub reinit_couleur
set_focus 120
return
th_vert:
el$(2)="40":el$(3)="180":el$(4)="120":' couleur de fond de Form
el$(5)="0":el$(6)="50":el$(7)="0":' couleur des polices
el$(8)="140":el$(9)="255":el$(10)="200":' couleur de fond  list, edit, combo
gosub aplic_color:gosub reinit_couleur
return
th_marron:
el$(2)="170":el$(3)="150":el$(4)="140":' couleur de fond de Form
el$(5)="60":el$(6)="40":el$(7)="40":' couleur des polices
el$(8)="210":el$(9)="190":el$(10)="190":' couleur de fond  list, edit, combo
gosub aplic_color:gosub reinit_couleur
return
th_bleu:
el$(2)="210":el$(3)="225":el$(4)="240":' couleur de fond de Form
el$(5)="0":el$(6)="0":el$(7)="255":' couleur des polices
el$(8)="235":el$(9)="245":el$(10)="255":' couleur de fond  list, edit, combo
gosub aplic_color:gosub reinit_couleur
return
th_gris:
el$(2)="210":el$(3)="210":el$(4)="220":' couleur de fond Form
el$(5)="0":el$(6)="0":el$(7)="0":' couleur des polices
el$(8)="245":el$(9)="245":el$(10)="255":' couleur de fond  list, edit, combo
gosub aplic_color:gosub reinit_couleur
return

prep_lig_color:
el$(2)=str$(couleur(2)):el$(3)=str$(couleur(3)):el$(4)=str$(couleur(4)):' Form
el$(5)=str$(couleur(5)):el$(6)=str$(couleur(6)):el$(7)=str$(couleur(7)):' police
el$(8)=str$(couleur(8)):el$(9)=str$(couleur(9)):el$(10)=str$(couleur(10)):' remplissage
return

reinit_couleur:
couleur(2)=val(el$(2)):couleur(3)=val(el$(3)):couleur(4)=val(el$(4)):' Form
couleur(5)=val(el$(5)):couleur(6)=val(el$(6)):couleur(7)=val(el$(7)):' police
couleur(8)=val(el$(8)):couleur(9)=val(el$(9)):couleur(10)=val(el$(10)):' remplissage
return
' ------
quit_reglages:
bouton=102:gosub bouton:gosub active_menu
hide 100:hide 120:text 122,""
return
' ================== GESTION DES UTILISATEURS et MOT DE PASSE ==================
new_utilisateur:
gosub clear_lig_fich
nodl=90:fichier$=fut$:clear nodl:file_load nodl,fichier$
a=count(nodl):if a=99 then message "Plus de place pour un nouvel utilisateur":clear nodl:return
a=a+1:nbc=2:cav$="0":gosub fab_string:el$(1)=a$
gosub inactive_menu
new_util:
show 100:caption 101,"Saisie de l'identifiant du nouvel utilisateur"
show 102:on_click 102,quit_new_utilisateur
show 104:text 104,"":set_focus 104:on_change 104,new_util1
return
' ----
new_util1:
show 105:active 105:on_click 105,new_util2
return
new_util2:
a$=text$(104)
if len(a$)>30 then message "      *  30 caractères maximum. *      ":goto new_util
if len(a$)<3 then message "      *  3 caractères minimum. *      ":goto new_util
show 107:caption 101,"Cliquez sur enregistrer ou sur quitter"
on_click 107,enreg_new_util
return
enreg_new_util:
bouton=107:gosub bouton:el$(2)=upper$(a$)
a$="BONJOUR":gosub Codec:el$(3)=b$:el$(4)="O":gosub fab_lig_fich:gosub save_add_lig_fichier
' return
' ------------------
quit_new_utilisateur:
bouton=102:gosub bouton:hide 100:hide 104:hide 105:hide 107:gosub active_menu
return
' ******************************************************************************
saisie_mdp:
show 100:caption 101,"Bienvenue "+el$(2)+",  Saisie de votre mot de passe"
if prov$="start"
  hide 102
else
  on_click 102,quit_saisie_mdp
end_if
show 104:show 105:show 106:secret_on 104:set_focus 104:inactive 105
if el$(4)="O" then mark_on 106:active 105:text 104,el$(3)
set_focus 104:active 105:on_click 105,saisie_mdp2
return
saisie_mdp2:
a$=text$(104)
if a$<>el$(3) then message "      *      MOT DE PASSE INCORECT !      *      ":gosub arret
if checked(106)=1 then el$(4)="O"
if checked(106)=0 then el$(4)="N"
gosub Codec:el$(3)=b$:gosub fab_lig_fich:NumLigFich=NumLigSel:gosub save_remplace_lig_fichier
quit_saisie_mdp:
bouton=102:gosub bouton
hide 100:hide 104:secret_off 104:hide 105:hide 106:inactive 105:hide 107
prov$="":goto start3
return
' -------
Codec:
b$ = "": DIM ic%: ' codage/décodage de a$ -> b$ par JL35
FOR ic% = 1 TO LEN(a$)
b$=b$+CHR$(BIN_XOR(ASC(MID$(a$,ic%,1)),200-ic%*2))
NEXT ic%: FREE ic%
RETURN
' *******
change_mot:
' change mot et enreg
' ici la ligne de nodl doit être sélectionnée el$(3)=ancien_mot de passe
show 100:caption 101,"Saisie du nouveau mot de passe"
if el$(3)="BONJOUR" then caption 101,"Bienvenue "+el$(2)+", Vous devez saisir un mot de passe pour pouvoir continuer"
if prov$="start"
  hide 102
else
  on_click 102,quit_change_mot
end_if
show 104:show 105:show 106:secret_on 104:set_focus 104:inactive 105
on_change 104,change_mot2
return
change_mot2:
active 105:on_click 105,change_mot3
return
change_mot3:
a$=text$(104)
if len(a$)<3 then message "      *  3 caractères minimum. *      ":goto change_mot
if len(a$)>50 then message "      *  50 caractères maximum. *      ":goto change_mot
a=instr(a$,s$):if a<>0 then message "    *  Ce caractère | est interdit. *  ":goto change_mot
show 107:on_click 107,change_mot4
caption 101," Cliquez sur la disquette pour valider votre saisie ==>"
return
change_mot4:
bouton=107:gosub bouton
if el$(3)="BONJOUR" then message "Vous allez devoir relancer le programme":active 11
gosub Codec:el$(3)=b$
if checked(106)=1 then el$(4)="O"
if checked(106)=0 then el$(4)="N"
gosub fab_lig_fich:gosub save_remplace_lig_fichier
' return
quit_change_mot:
bouton=107:gosub bouton
hide 100:hide 104:hide 105:mark_off 106:hide 106:secret_off 104:inactive 105:hide 107
return
' ******
sel_utilisateur:
show 100:show 103:caption 101,"Sélectionnez votre identifiant"
if prov$="start"
  hide 102
else
  on_click 102,quit_sel_utilisateur
end_if
nber=2:re(1)=1:re(2)=2:nl=103:gosub sel_lig_fich
' return
quit_sel_utilisateur:
hide 100:clear 103:hide 103:show 102
return
' ******
cre_admin:
gosub bienvenu:on_click nf,cre_admi2
end
return
cre_admi2:
hide nf:show nf:gosub clear_lig_fich
' identifiant
a$=" Tapez votre identifiant  ici."
m=message_input(" IDENTIFIANT ","30 caractères maximum",a$)
if m=0 then message mess_rep_oblig$:goto cre_admi2
a$=message_text$
if a$=" Tapez votre identifiant  ici." then message mess_rep_oblig$:goto cre_admi2
if len(a$)>30 then message "      *  30 caractères maximum. *      ":goto cre_admi2
if len(a$)<3 then message "      *  3 caractères minimum. *      ":goto cre_admi2
el$(2)=upper$(message_text$):el$(1)="01"
' el$(3)="Mot de passe provisoire, el$(4)=(mémorisé)"
cre_admi3:
a$="BONJOUR":gosub Codec:el$(3)=b$
el$(4)="N":gosub fab_lig_fich:gosub save_add_lig_fichier
message "Au redémarrage du programme, vous devez saisir un nouveau mot de passe."
gosub arret
return
' ================================  ROUTINES ===================================
sel_lig_fich:
if nl<1 then message "ERREUR: Le numéro du LIST (nl) n'est pas défini au label sel_lig_fich":terminate
if nber<1 then message "ERREUR: Le nombre d'éléments à rechercher (nber) n'est pas défini au label sel_lig_fich":terminate
gosub afi_liste_elements
on_click nl,compare_lig_fich
' retourne la ligne sélectionnée de fichier$ sous variable a$
end
return
' ----
compare_lig_fich:
h$=item_index$(nl)
for NumLigFich=1 to count(nodl)
  ligsel$=item_read$(nodl,NumLigFich):a$=ligsel$:gosub dec_string
  for r=1 to nber
  if re(r)=r then el_afi$=el_afi$+el$(r)+" "
  next r
  if h$=el_afi$ then NumLigSel=NumLigFich:exit_for
  el_afi$=""
next NumLigFich
nber=0:nl=0
return
' ----
afi_liste_elements:
' le fichier doit être chargé dans le dlist nodl et il faut la liste (nber) des éléments recherchés re(1)...
' ensuite afficher les éléments recherchés dans list nl sous la variable el_afi$
if nber<1 then message "ERREUR: Le nombre d'éléments à rechercher (nber) n'est pas défini au label afi_liste_elements":terminate
el_afi$=""
for NumLigFich=1 to count(nodl)
 gosub dec_lig_fich
  for r=1 to nber
  if re(r)=r then el_afi$=el_afi$+el$(r)+" "
  next r
  item_add nl,el_afi$
  el_afi$=""
next NumLigFich
return
' ******
save_add_lig_fichier:
item_add nodl,lig_fich$:file_save nodl,fichier$:clear nodl:' ajoute lig_fich$ et sauve dans fichier$
return
' *****
save_remplace_lig_fichier:
item_delete nodl,NumLigFich:item_insert nodl,NumLigFich,lig_fich$:file_save nodl,fichier$:clear nodl:' remplace lig_fich$ et sauve dans fichier$
return
' *****
save_sup_lig_fichier:
item_delete nodl,NumLigFich:file_save nodl,fichier$:clear nodl:' efface lig_fich$ et sauve dans fichier$
return
' ******
dec_lig_fich:
if NumLigFich=0 then message "ERREUR: NumLigFich=0 au label dec_lig_fich":terminate
' découpe la ligne NumLigFich du fichier$
a$=item_read$(nodl,NumLigFich):gosub dec_string
return
' *****
dec_string:
if a$="" then message "ERREUR: a$="" au label dec_string":terminate
nba=0:ls=len(a$):a=instr(a$,s$):b$=a$
repeat:' boucle pour compter le nb de s$ dans a$
  ls=ls-a:b$=mid$(b$,a+1,ls):a=instr(b$,s$):nba=nba+1
until a=0:nbe=nba+1
for ne=1 to nba:' boucle de fabrication de el$(ne)
  ls=len(a$):a=instr(a$,s$):el$(ne)=mid$(a$,1,a-1):a$=mid$(a$,a+1,ls):el$(ne+1)=a$
next ne
nba=0:ne=0:nbe=0
return
' *********
fab_string:
' a = valeur du nombre : nbc = nombre de caractères total souhaité : cav$ = caractère avant (0 ou " " ou --- etc....)
b$=str$(a):ls=len(b$)
if nbc=0 then message "ERREUR: La valeur de nbc est égale à zéro au label fab_string":terminate
if ls>nbc then message "ERREUR: La valeur de nbc est inférieure à ls au label fab_string":terminate
if nbc>ls then a$=string$(nbc-ls,cav$)+str$(a)
if nbc=ls then a$=str$(a)
b$="":nbc=0:a=0
return
' *****
cre_fichier:
' créer un fichier avec un count à zéro si lig_fich$=""
file_open_write 1,fichier$
if lig_fich$<>"" then file_writeln 1,lig_fich$
file_close 1:lig_fich$=""
return
' *****
fab_lig_fich:
if el$(1)="" then message "ERREUR: el$(1)=rien au label fab_lig_fich":terminate
n=1:lig_fich$=el$(n)+"|":' routine de fabrication lig_fich$ (15 éléments)
for n=2 to 14
if el$(n)<>"" then lig_fich$=lig_fich$+el$(n)+"|"
if el$(n)="" then lig_fich$=lig_fich$+el$(n)+"§|"
if n=14 and el$(n)<>"" then lig_fich$=lig_fich$+el$(n)
if n=14 and el$(n)="" then lig_fich$=lig_fich$+"§"
next n
return
' ------
clear_lig_fich:
for n=1 to 15:el$(n)="":next n
return
' ******
bouton:
if active(bouton)=0 or show(bouton)=0 or clicked(bouton)=0 then return
x=top(bouton):y=left(bouton)
top bouton,x+2:left bouton,y+2
wait 100
top bouton,x:left bouton,y
return
' ================================ INSTALLATION ================================
install:
' créer le fichier utilisateur
fichier$=fut$:gosub cre_fichier
' créer le fichier code
fichier$=ficod$:gosub cre_fichier
return
' ***** création des FORM(s)
cre_form_nf:
form nf:command_target_is nf:print_target_is nf
width nf,lnf:height nf,hnf
top nf,int((screen_y-height(nf))/2):left nf,int((screen_x-width(nf))/2)
caption nf,caption_nf$
hide nf
return
' ================================== MESSAGE ===================================
bienvenu:
font_bold nf:font_size nf,10
print:print
print:print string$(70," ")+" BONJOUR: Bienvenue pour la mise en place du logiciel."
print:print:print:print
print:print string$(30," ")+" Vous êtes le premier utilisateur, à ce titre vous serez l'ADMINISTRATEUR de ce logiciel."
print:print string$(30," ")+" L'ADMINISTRATEUR a le pouvoir de gérer les inscriptions ou radiations des autres utilisateurs."
print:print
print:print string$(30," ")+" Pour commencer le programme vous demandera de choisir un IDENTIFIANT."
print:print string$(30," ")+" CONSEIL: ...."
print:print string$(30," ")+" Ne pas dépasser 30 caractères, (transformation automatique en majuscule)"
print:print
print:print string$(30," ")+" Préparez votre MOT DE PASSE."
print:print string$(30," ")+" REMARQUE: ......"
print:print string$(30," ")+" Minimum 6 caractères, ne pas dépasser 50 caractères,"
print:print string$(30," ")+" tout les caractères du clavier son acceptés sauf | , vous pouvez utiliser majuscule ou minuscule à votre guise."
print:print string$(30," ")+" Si vous le souhaitez vous pourez choisir l'option 'mémoriser mon mot de passe'"
print:print
print:print string$(30," ")+" Ensuite le programme s'arrêtera, vous devrez le relancer et saisir votre mot de passe."
print:print
print:print string$(30," ")+" REMARQUE: ......"
print:print:print
print:print string$(80," ")+" CLIQUEZ N'IMPORTE OU POUR CONTINUER"
return
' ================================== SORTIE ====================================
arret:
message "Le programme doit s'arrêter maintenant"
fin:
terminate


Je vous ai laissé l'ancienne version pour que vous puissiez reprendre les commentaires du début.

A+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 13:26

Bonjour Jean_Claude (de papinailleur Very Happy )
Je ne comprends pas bien ton problème de répertoire au lancement initial du programme, tout as tout ce qu'il faut pour ça, avec DIR_EXISTS et DIR_MAKE ?
Code:
IF DIR_EXISTS(rep$) = 0
    ' lancement initial, le répertoire n'existe pas encore
    DIR_MAKE rep$
END_IF
ou alors je n'ai pas compris le problème ?
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 13:35

lol! lol! lol! lol! lol! lol!

Comment, mais comment j'ai pu me débrouiller pour pas trouver ce qui est on ne peu plus simple !

Merci Papinailleur Razz

lol! lol! lol! lol! lol! lol!
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 14:30

pas la peine non plus de dévaloriser ma contribution en disant que c'était on ne peut plus simple Evil or Very Mad
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 15:26

Heu bon JL35, c'était pour dire que tu savais faire des trucs plus évolués, je pense Wink
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 15:41

Je veux croire quand même que Jean Claude a compris que je plaisantais... Very Happy
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 16:31

Bien sur que tu plaisantais (à mes dépends) Razz

Mais c'est difficile d'être sur le forum et sur le code en même temps....

Bon je retourne bosser...

A+
Revenir en haut Aller en bas
RMont




Nombre de messages : 233
Age : 81
Localisation : charente maritime
Date d'inscription : 29/12/2008

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 18:34

bonsoir a tous
pourquoi chez moi cela ne fonctionne pas.
j'ai creer un dossier " dossier -j-c" lequel j'ai mis en copier coller le prg present sur le site que j'ai appelé" prg-j-c".
je lance et j'ai une erreur 32 illegal instruction en ligne 284 --->Application_title "nom du prg: message".
je ne peu donc pas tester ce programme.
que faut-il que je fasse ?
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 18:38

On peut penser que tu n'as pas la dernière version (instantanée) de Panoramic avec la nouvelle instruction 'APPLICATION_TITLE T$' (version du 28/01/2012 13/02/2012: http://dl.free.fr/gjqvwrYLj/PANORAMIC_EDITOR.zip )
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion EmptyVen 20 Avr 2012 - 19:21

Bien vu JL35,

@RMont, tu peux aussi mettre un rem à la ligne 284

A+
Revenir en haut Aller en bas
Contenu sponsorisé





Base pour un programme de gestion Empty
MessageSujet: Re: Base pour un programme de gestion   Base pour un programme de gestion Empty

Revenir en haut Aller en bas
 
Base pour un programme de gestion
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Développement du programme de base
» Une "base de connaissance" - pour jouer ou plus si affinité
» Un programme pour le boulot
» Gestion des labels pour ON_ERROR_GOTO
» Ma structure de programme pour débutant.

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: