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
» Une calculatrice en une ligne de programme
Carnet d'adresse (en chantier) Emptypar jean_debord Aujourd'hui à 8:01

» Gestion d'un système client-serveur.
Carnet d'adresse (en chantier) Emptypar Pedro Hier à 19:31

» Les maths du crocodile
Carnet d'adresse (en chantier) Emptypar jean_debord Hier à 10:37

» Naissance de Crocodile Basic
Carnet d'adresse (en chantier) Emptypar jean_debord Hier à 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Carnet d'adresse (en chantier) Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Carnet d'adresse (en chantier) Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Carnet d'adresse (en chantier) Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Carnet d'adresse (en chantier) Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
Carnet d'adresse (en chantier) Emptypar leclode Dim 21 Avr 2024 - 18:09

» trop de fichiers en cours
Carnet d'adresse (en chantier) Emptypar Marc Dim 21 Avr 2024 - 2:41

» 2D_fill_color(résolu)
Carnet d'adresse (en chantier) Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Carnet d'adresse (en chantier) Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Carnet d'adresse (en chantier) Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Carnet d'adresse (en chantier) Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

» Bataille-navale
Carnet d'adresse (en chantier) Emptypar jjn4 Mer 3 Avr 2024 - 14:08

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment : -20%
-20% Récupérateur à eau mural 300 ...
Voir le deal
79 €

 

 Carnet d'adresse (en chantier)

Aller en bas 
3 participants
AuteurMessage
Jean Claude

Jean Claude


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

Carnet d'adresse (en chantier) Empty
MessageSujet: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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


Revenir en haut Aller en bas
JL35




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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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 ?
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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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+
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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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+
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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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+
Revenir en haut Aller en bas
JL35




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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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
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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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+
Revenir en haut Aller en bas
JL35




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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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).
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

Carnet d'adresse (en chantier) Empty
MessageSujet: re   Carnet d'adresse (en chantier) EmptyJeu 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
@+
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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 13 Aoû 2009 - 19:21

COMPLETEMENT D'ACCORD
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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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+
Revenir en haut Aller en bas
JL35




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

Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) EmptyJeu 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.
Revenir en haut Aller en bas
Contenu sponsorisé





Carnet d'adresse (en chantier) Empty
MessageSujet: Re: Carnet d'adresse (en chantier)   Carnet d'adresse (en chantier) Empty

Revenir en haut Aller en bas
 
Carnet d'adresse (en chantier)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mon carnet d'adresse
» Un carnet d'adresses
» mon premier source un carnet adresse

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: