Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Carnet d'adresse (en chantier) | |
| | Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 12:33 | |
| Salut à tous, Voici 2 codes, le premier pour créer le fichier des contacts et le second (qui n'est pas terminé) et qui sert à ajouter un contact Mon problème c'est le controle éffectué sur le code postal qui ne fonctionne pas si j'arrive de l'EDIT précédent par [TAB], alors que si je clique direct sur l'EDIT çà fonctionne Bon courage - Code:
-
file_open_write 1,"carnetad.jca" for n=1 to 10 file_writeln 1,nom$(n) file_writeln 1,prenom$(n) file_writeln 1,rue1$(n) file_writeln 1,rue2$(n) file_writeln 1,cp$(n) file_writeln 1,ville$(n) file_writeln 1,tel1$(n) file_writeln 1,tel2$(n) file_writeln 1,fax$(n) file_writeln 1,messag$(n) file_writeln 1,cat$(n) next n file_close 1 return
-- - Code:
-
label quit,abandon,rpcv,ctrl,chargecarnet,nom,prenom,rue1,rue2,cp,ctrcp
dim n,f,v dim n$,a$,b$ dim nom$(10),prenom$(10),rue1$(10),rue2$(10),cp$(10),ville$(10),tel1$(10),tel2$(10),fax$(10),messag$(10),cat$(10)
left 0,570:top 0,400:width 0,550:height 0,492 caption 0,"CARNET D'ADRESSES * Création d'un nouveau Contact" font_bold 0
alpha 1:left 1,50:top 1,30 caption 1,"* NOM:"
alpha 2:left 2,34:top 2,70 caption 2,"PRENOM:"
alpha 3:left 3,25:top 3,110 caption 3,"ADRESSE:"
edit 4:left 4,100:top 4,27 on_change 4,nom
edit 5:left 5,100:top 5,67 on_change 5,prenom
edit 6:left 6,100:top 6,140:width 6,360 on_change 6,rue1
edit 7:left 7,100:top 7,171:width 7,360 on_change 7,rue2
edit 8:left 8,100:top 8,202:width 8,83 on_click 8,cp
edit 9:left 9,200:top 9,202:width 9,259
alpha 10:left 10,61:top 10,143 caption 10,"Rue 1"
alpha 11:left 11,60:top 11,173 caption 11,"Rue 2"
alpha 12:left 12,33:top 12,205 caption 12,"CP et Ville"
alpha 13:left 13,19:top 13,253 caption 13,"TELEPHONE:"
edit 14:left 14,100:top 14,250:width 14,85
edit 15:left 15,255:top 15,250:width 15,85
edit 16:left 16,374:top 16,250:width 16,85
alpha 17:left 17,5:top 17,293 caption 17,"* MESSAGERIE:"
edit 18:left 18,100:top 18,290:width 18,277
alpha 19:left 19,344:top 19,253:width 19,30 caption 19,"FAX:"
alpha 20:left 20,186:top 20,253 caption 20,"PORTABLE:"
alpha 21:left 21,14:top 21,333 caption 21,"* CATEGORIE:"
combo 22:left 22,100:top 22,330:width 22,100
button 23:left 23,100:top 23,400:width 23,85 caption 23,Abandon on_click 23,abandon
button 24:left 24,320:top 24,400:width 24,125 caption 24,"Ajouter ce Contact"
print_locate 300,40:print "* => Mentions Obligatoires"
gosub chargecarnet:gosub rpcv if n<10 then n$="00"+right$(str$(n),1) if n>9 and n<100 then n$="0"+right$(str$(n),2) if n>100 then n$= str$(n) print_locate 8,8:print n$ set_focus 4 end rem ------------------------------------------------------------------------- cp: cp$(n)=text$(8) if scancode=13 then gosub ctrcp:set_focus 9:return a$=inkey$ goto cp
ctrcp: v=numeric(cp$(n)) if v=0 then message "Vous devez entrer une valeur numérique":text 8,"":goto cp if len(cp$(n))<>5 then message "5 chiffres":text 8,"":goto cp return
rue2: rue2$(n)=text$(7) if scancode=13 then set_focus 8:return a$=inkey$ goto rue2
rue1: rue1$(n)=text$(6) if scancode=13 then set_focus 7:return a$=inkey$ goto rue1
nom: nom$(n)=upper$(text$(4)) a$=inkey$ b$=nom$(n):f=5 if scancode=13 then gosub ctrl:text 4,nom$(n):return goto nom
prenom: if nom$(n)="" then message "Les zones marquées d'un * sont obligatoires":text 5,"":set_focus 4:return prenom$(n)=upper$(text$(5)) a$=inkey$ b$=prenom$(n):f=6 if scancode=13 then gosub ctrl:text 5,prenom$(n):return goto prenom
ctrl: if len(b$)<2 then message "2 caractères minimum":return set_focus f:b$="":a$="" return
rpcv: for n=1 to 10 if nom$(n)="" then return next n message "il n'y a plus de place pour un nouveau contact" return
rem ------------------------------------------------------------------------- chargecarnet: file_open_read 1,"carnetad.jca" for n=1 to 10 file_readln 1,nom$(n) file_readln 1,prenom$(n) file_readln 1,rue1$(n) file_readln 1,rue2$(n) file_readln 1,cp$(n) file_readln 1,ville$(n) file_readln 1,tel1$(n) file_readln 1,tel2$(n) file_readln 1,fax$(n) file_readln 1,messag$(n) file_readln 1,cat$(n) next n file_close 1 return
abandon: execute jjccarad.exe
quit: terminate
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 14:12 | |
| Salut Jean Claude, j'ai juste jeté un oeil en diagonale, deux remarques rapides: - c'est quoi le premier code ? un sous-programme sans étiquette ? - à la fin du deuxième code il y a un appel à jjccarad.exe, quès aco ? | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 15:02 | |
| Salut JL35,
pour le premier code, j'ai éffectivement oublié d'enlever le RETURN. IL fait justement partie du code "pjjccarad.exe", qui lui est le Carnet d'adresses propement dit. Ce 1er code sert uniquement à créer le fichier "carnetad.jca" qui est nécéssaire pour faire fonctionner le 2eme Code. Si tu n'utilise pas le bouton [Abandon] de ce dernier, çà fonctionne car la commande EXECUTE "pjjccarad.exe" ne sera pas sollicitée.
Teste-le, et tu verras que les saisies peuvent se faire sans la souris. Sauf que l'utilisation de la touche [TAB] perturbe le fonctionnement du prog. Les controles demandés au LABEL ctrcp ne sont pas effectués, (si tu arrives de rue2 en tapant TAB)..
Au LABEL cp, j'ai tenté ceci: if scancode=9 then goto cp (pour empécher l'utilisation de la touche TAB); mais la çà bloque tout.
En fait, on retombe sur les mêmes problèmes que dans le poste "comment terminer une saisie dans un EDIT"
Ce début de programme peut néanmoins donner des idées aux débutants. Je pense qu'il est plus sage d'attendre la prochaine version pour le terminer. A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 15:08 | |
| Excusez-moi, pour lancer le 1er code, il faut copier la ligne DIM du 2eme(avec nom$(10),.....). Mais je suis certain que JL35 a déja rectifié de lui-même cet oubli. A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 15:17 | |
| Encore Moi, Attention: certaines lignes du code sont assez longues, si vous copier les codes il faut rabouter les lignes trops longues, sinon cela ne fonctionne pas. A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 17:13 | |
| Donc le 1er est l'exécutable appelé par le 2ème, il y manquait le début (les dim et label), et la fin (terminate à la place du return). Je n'ai pas étudié (ni encore testé) le code, mais il doit bien y avoir moyen de regrouper les deux dans un seul exécutable, une seule application ? C'est toujours un peu embêtant d'avoir à transporter deux exécutables pour une seule application, et pour la maintenance ça ferait un seul module. D'autant plus que le premier est vraiment tout petit. Par exemple, dans le second code, proposer la création du fichier des contacts s'il n'existe pas, et dans ce cas brancher sur le sous-programme du code 1. C'est mieux de mettre les noms de fichier en paramètre au début, ça facilite la maintenance si tu veux en changer, par exemple fc$ = "carnetad.jca" D'une manière générale, c'est mieux de paramétrer tout au maximum, s'il y a un élément à changer on le change une fois, au début, plutôt qu'avoir à aller à la pêche dans tout le programme pour changer toutes les occurences, en en oubliant une ou deux... Par exemple cette limitation à 10 que l'on retrouve partout, tu pourrais mettre en tête max = 10, et remplacer tous les 10 par max. Le jour où tu veux modifier, tu changes simplement la valeur de max. Je crois que c'est une bonne habitude à prendre.
Avant de faire chargecarnet, tu peux tester l'existence du fichier: IF FILE_EXISTs(fc$) =0 ... et là renvoyer vers le sous-programme de création initiale.
Vers les lignes 80, mise en forme de n$, puisque tu veux un résultat à 3 chiffres tu peux simplement écrire: n$ = STRING$(3 - LEN(STR$(n)), "0") + STR$(n) (contrairement au Basic, le STR$() ne renvoie pas d'espace en tête, ce qui n'est pas plus mal)
La présentation n'est pas mal, mais il y a encore un peu de travail, bon courage Jean Claude !
Dernière édition par JL35 le Jeu 13 Aoû 2009 - 17:54, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 17:53 | |
| Bon tu y es pas du tout, Alors oublie le premier code et à la place prends celui-ci c'est lui qui appelle le 2eme par le menu gestion des adresses - Code:
-
rem jjccard.bas -- Carnet d'adresses version 1.0 par JEAN CLAUDE 2009
dim n dim nom$(10),prenom$(10),rue1$(10),rue2$(10),cp$(10),ville$(10),tel1$(10),tel2$(10),fax$(10),messag$(10),cat$(10)
label ouvrir,enregistrer,quit label annuler,copier,coller,supprimer label nouvadress,modifadress,supadress label aide,crefich
caption 0,"Carnet d'adresses" top 0,100 left 0,100
main_menu 1
rem CREATION DES MENUS sub_menu 2 : caption 2,"Fichier" : parent 2, 1 sub_menu 3 : caption 3,"Edition" : parent 3, 1 sub_menu 11 : caption 11,"Gestion des Adresses" : parent 11, 1 sub_menu 15 : caption 15,"Outils" : parent 15, 1
rem OPTIONS DU MENU FICHIER sub_menu 4 : caption 4,"Ouvrir" : parent 4, 2 sub_menu 5 : caption 5,"Enregistrer" : parent 5, 2 sub_menu 6 : caption 6,"Quitter" : parent 6, 2 on_click 4,ouvrir on_click 5,enregistrer on_click 6,quit
rem OPTIONS DU MENU EDITION sub_menu 7 : caption 7,"Annuler" : parent 7, 3 sub_menu 8 : caption 8,"Copier" : parent 8, 3 sub_menu 9 : caption 9,"Coller" : parent 9, 3 sub_menu 10 : caption 10,"Supprimer" : parent 10, 3 on_click 7,annuler on_click 8,copier on_click 9,coller on_click 10,supprimer
rem OPTIONS DU MENU GESTION DES ADRESSES sub_menu 12 : caption 12,"Nouvelle Adresse" : parent 12,11 sub_menu 13 : caption 13,"Modifier une Adresse" : parent 13,11 sub_menu 14 : caption 14,"Supprimer une Adresse" : parent 14,11 on_click 12,nouvadress on_click 13,modifadress on_click 14,supadress
rem OPTIONS DU MENU OUTILS sub_menu 16 : caption 16,"Aide" : parent 16,15 on_click 16,aide
end rem ------------------------------------------------------------
rem LES OPTIONS DU MENU EDITION --------------------------------
annuler: message "vous avez cliqué sur annuler" return
copier: message "vous avez cliqué sur copier" return
coller: message "vous avez cliqué sur coller" return
supprimer: message "vous avez cliqué sur supprimer" return
rem LES OPTIONS DU MENU FICHIER --------------------------------
ouvrir: message "vous avez cliqué sur ouvrir" return
enregistrer: message "vous avez cliqué sur enregistrer" return
quit: terminate
rem LES OPTIONS DU MENU GESTION DES ADRESSES --------------------
nouvadress: n=file_exists("carnetad.jca") if n=0 then gosub crefich execute novadress.exe return
modifadress: n=file_exists("carnetad.jca") if n=0 then message "le fichier carnetad.jca doit être créer par Nouvelle Adresse":return message "vous avez cliqué sur modier une adresse" return
supadress: if n=0 then message "le fichier carnetad.jca doit être créer par Nouvelle Adresse":return message "vous avez cliqué sur supprimer une adresse" return
rem LES OPTIONS DU MENU OUTILS ------------------------------------
aide: message "vous avez cliqué sur aide" return
crefich: file_open_write 1,"carnetad.jca" for n=1 to 10 file_writeln 1,nom$(n) file_writeln 1,prenom$(n) file_writeln 1,rue1$(n) file_writeln 1,rue2$(n) file_writeln 1,cp$(n) file_writeln 1,ville$(n) file_writeln 1,tel1$(n) file_writeln 1,tel2$(n) file_writeln 1,fax$(n) file_writeln 1,messag$(n) file_writeln 1,cat$(n) next n file_close 1 return
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 17:57 | |
| T'as raison, je n'avais rien compris...
Bon, là c'est plus clair. Je maintiens que le deuxième (novadress) serait mieux en sous programme du premier qu'en exécutable indépendant. Il est vrai que tu es peut-être limité par le nombre d'objets, et de couper en deux ça permet de contourner cette limitation. Mais avec la nouvelle version promise par Panoramic pour bientôt, no limit !
Tu sembles maîtriser pas mal tous ces objets système de Panoramic, pour quelqu'un qui vient directement du QBasic tu d'adaptes vite (plus vite que moi). | |
| | | Georges
Nombre de messages : 290 Age : 55 Localisation : Martinique Date d'inscription : 29/05/2009
| Sujet: re Jeu 13 Aoû 2009 - 18:28 | |
| Salut! Le paramétrage ne fonctionne pas pour tout - Code:
-
dim max max = 10 dim nom$(max),prenom$(max),rue1$(max),rue2$(max) ,cp$(max),ville$(max),tel1$(max), etc..
CELA NE FONCTIONNE PAS Le sujet avait déjà été évoqué par Jean-Claude, je croit. N'empêche que pour certains programmes, il serait interressant de pouvoir paramétrer la taille des tableaux et/ou de les redimensionner. Georges @+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 19:21 | |
| | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 20:53 | |
| - Citation :
- Je maintiens que le deuxième (novadress) serait mieux en sous programme du premier qu'en exécutable indépendant.
Ok JL35, mais.. Si je procéde de la sorte c'est que dans ma vision actuelle du logiciel le programme principal (jjccard.bas ou exe) est destiné a afficher tous les Contacts pour pouvoir les diriger vers la messagerie ou les sélectionner pour tout autres usages. Mais je suis d'accord avec toi, cela va faire beaucoups de codes indépendants. En fait, j'ai pris l'habitude avec QB de faire des RUN successifs, ce qui avait pour avantage de limiter la taille pour la mémoire vive (je te rapelle que j'ai commencé avec un CPC6128 et à cette époque là t'avais plutôt intérêt à ménager la mémoire vive). C'est vrai que maintenant le problème ne se pose plus. Et pour finir, c'est la premiere fois que j'utilise MAIN_MENU et donc j'y vais pas à pas. Ce carnet d'adresse j'en ai pas besoin, je voulais juste à travers ce projet tester différentes fonctions en attendant de reprendre Mon Prog de Compte, (qui lui même ne sera certainement pas une version définitive) A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Carnet d'adresse (en chantier) Jeu 13 Aoû 2009 - 22:48 | |
| Je suis bien conscient que le code que tu proposes est un banc d'essai pour les diverses fonctions, et c'est très instructif. Autant pour moi en ce qui concerne le paramétrage des dimensions des tableaux, ça fonctionnait en Basic, dommage. | |
| | | Contenu sponsorisé
| Sujet: Re: Carnet d'adresse (en chantier) | |
| |
| | | | Carnet d'adresse (en chantier) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |