FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
tableau - Création simplifiée d'un tableau Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
tableau - Création simplifiée d'un tableau Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
tableau - Création simplifiée d'un tableau Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
tableau - Création simplifiée d'un tableau Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
tableau - Création simplifiée d'un tableau Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
tableau - Création simplifiée d'un tableau Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
tableau - Création simplifiée d'un tableau Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
tableau - Création simplifiée d'un tableau Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
tableau - Création simplifiée d'un tableau Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
tableau - Création simplifiée d'un tableau Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
tableau - Création simplifiée d'un tableau Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
tableau - Création simplifiée d'un tableau Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
tableau - Création simplifiée d'un tableau Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
tableau - Création simplifiée d'un tableau Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
tableau - Création simplifiée d'un tableau Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

 

 Création simplifiée d'un tableau

Aller en bas 
AuteurMessage
Jean Claude

Jean Claude


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

tableau - Création simplifiée d'un tableau Empty
MessageSujet: Création simplifiée d'un tableau   tableau - Création simplifiée d'un tableau EmptyMar 26 Jan 2010 - 21:29

je vous livre un petit programme qui a pour but de fournir deux routines.

la première est le formatage des nombres par format_nombre$:
3 exemples:
format_nombre$="###" => nombre de 3 caractères précédé de x zéros (ex: 1 = 001)
format_nombre$="###.##" => nombre décimale précédé de x zéro et 2 chiffres après la virgule (ex: 001,20).
format_nombre$="&###.##" => nombre décimale précédé de x espaces et 2 chiffres après la virgule(ex: 1,20).

la deuxième est le formatage des strings pour affichage dans un tableau:
Choix de l'alignement par alignement$ comme suit: "G" à gauche, "D" à droite, "C" = centré.

Le principe est que vous définissez tableau$ suivant vos besoins.
ex: tableau$="| NOM | PRENOM | AGE |"
impératif tableau$ doit commencer et se terminer par "|"
chaque élément du tableau doit être séparé par "|" pour que le programme définisse la longueur du string à insérer.
il est conseillé de mettre un espace avant et après "|" comme dans l'exemple ci-dessus. Le programme gère la dimensions et l'affichage des strings et conserve vos variables d'origines.

L'exemple ci-dessous est une feuille de calcul pour vos dépenses et recettes. il n'a qu'un but c'est les 2 routines citées précédement.
J'en reparlerait à Jack dans les BUG, car en programmant j'en ai découvert 2.

Voici le programme:

Code:
' création simplifiée d'un tableau. Jean Claude (Janvier 2010)

' ========================= DIM et LABEL =======================================

' les variables nécessaires au programme
dim format_nombre$,a$,limit$,nombre$,alignement$,v$,esp$
dim tableau$,vtab$,ptab$,printligne$
dim n,ne,nbe,nl,let,lg,ln,lt,lv,lv2,nombre,nbcav,limit,nbzav,nbzap,ypos

' vos éléments tableau
dim nlig$,libel$,op$,montant$,solde$,ligne$(10)
dim li,maxli
' tableau$="| N° Ligne  | Motif (Libèllé) | Montant | Solde |"
dim montant,solde

' vos label(s)
label fin,Nligne,entree_donnees,motif,mtf,op1,op2,op3,mt1,mt2

' les label(s) "obligatoires" pour les 2 routines (using et tab)
label nombre,recheche_la_virgule,sans_virgule,avec_virgule
label tabulation,alignement_gauche,alignement_droit,alignement_centre,affiche

' ============================= FORM et OBJETS =================================

top 0,200:left 0,200:width 0,950:height 0,600:caption 0,"TABLEAU AUTOMATIQUE"
list 1:top 1,50:left 1,50:width 1,800:height 1,300:font_name 1,"fixedsys"
edit 2:top 2,400:left 2,50
alpha 3:top 3,380:left 3,50:caption 3, "Entrée des données"
memo 4:top 4,380:left 4,200:width 4,650:height 4,50
print_target_is 4
' ==============================================================================
nbe=0:' remise à zéro du nombre d'éléments du tableau
solde=0: ' solde au démarrage
gosub entree_donnees: ' entrée des données du tableau
end
' ==============================================================================
'                LE PROGAMME création simplifiée d'un tableau
'                --------------------------------------------
entree_donnees:
ne=1: ' initialisation au premier élément du tableau
printligne$=""
li=li+1:maxli=10
' 1) définir le tableau ( "|" ce signe est obligatoire entre chaque élément du tableau)
tableau$="| N° Lig  |  Motif (Libèllé)  | OP  |    Montant    |    Solde    |" :' le tableau
' ------------------------------
' 2) le N° de Ligne (variable nl)
format_nombre$="###":' ici on definie le format de la variable nl pour son affichage
alignement$="G": ' choix de l'alignement - G=gauche, C=centrée, D=droite
gosub Nligne: ' le N° de ligne est automatique (Pas de saisie)
printligne$=printligne$+ptab$
' ------------------------------
' maintenant le Motif (2ème élément du tablau) par saisie de l'utilisateur
print_target_is 4: ' le memo 4 sert au indications pour l'utilisateur
print:print " <== Entrez le Motif de la dépense ou de la recette "
set_focus 2:on_key_up 2,motif
return

motif:
if key_up_code=13 then a$=upper$(text$(2)):gosub mtf
return

mtf:
' saisie du Motif
if len(a$)>18 then message "20 Caractéres Maximun":return' limitation de libel$
libel$=a$:vtab$=libel$:alignement$="C"
gosub tabulation
gosub affiche
' saisie de l'opérateur
clear 4:print_target_is 4: print:print " <== Entrez + pour une recette ou - pour une dépense "
a$="":text 2,"":set_focus 2:on_key_up 2,op1
return

op1:
if key_up_code=13 then a$=text$(2):gosub op2
return

op2:
if a$="+" or a$="-" then goto op3
message "Attendu + ou -":text 2,"":a$="":return
op3:
op$=a$:vtab$=op$:alignement$="C"
gosub tabulation
gosub affiche
' saisie du montant de l'opération
clear 4:print_target_is 4: print:print " <== Entrez le Montant de l'opération "
a$="":text 2,"":set_focus 2:on_key_up 2,mt1
return

mt1:
if key_up_code=13 then a$=text$(2):gosub mt2
return

mt2:
if numeric(a$)=0 then message "vous devez entrer un montant":text 2,"":a$="":return
montant=val(a$)
if montant>9999999 then message "Entrez un montant < à 10.000.000":text 2,"":a$="":return
nombre=montant:format_nombre$="&#######.##":gosub nombre
montant$=nombre$:vtab$=montant$:alignement$="D":gosub tabulation
gosub affiche
if op$="+" then solde=solde+montant
if op$="-" then solde=solde-montant
nombre=solde:format_nombre$="&#######.##":gosub nombre
solde$=nombre$:vtab$=solde$::alignement$="D":gosub tabulation
gosub affiche
ligne$(li)=printligne$:text 2,""
goto entree_donnees
return

Nligne:
nl=nl+1: ' valeur de la variable nl (N° de ligne)
nombre=nl: ' c'est la variable nl qui va être formatée (on la passe dans la variable nombre)
gosub nombre:' execute le sous programme de formatage nombre
nlig$=nombre$: ' on remet le valeur dans la bonne variable
vtab$=nlig$: '  on transfert nlig$ dans vtab$ pour le traitement
gosub tabulation:' ensuite execute le Sous Prog de Formatage variable pour tableau (TAB)
gosub affiche
return

affiche:
clear 1:print_target_is 1:print tableau$
for li=1 to maxli
if ligne$(li)="" then exit_for
print ligne$(li)
next li
printligne$=printligne$+ptab$:ptab$="":vtab$="": ' création de la ligne tableau
print printligne$: ' Affichage dans le memo
return

' ==============================================================================
'                  Sous Prog de Formatage variable pour tableau (TAB)
' ==============================================================================
tabulation:
n=0:lv=0:lt=0:let=0:a$="":ptab$="":ypos=0
lt=len(tableau$)
nbe=1:ne=ne+1:' incrémente le numéro de l'élément
for n=1 to lt
a$=mid$(tableau$,n,1)
if a$="|" then nbe=nbe+1
if ne=nbe then ypos=n+1:exit_for:'défini la position Y de l'élément
a$=""
next n
for n=ypos to lt
a$=mid$(tableau$,n,1)
if a$="|" then exit_for: ' défini la longueur de l'élément
let=let+1
next n
if alignement$<>"G" and alignement$<>"D" and alignement$<>"C" then message " "+alignement$+" est un Nom d'alignement incorrect":terminate
if alignement$="G" then gosub alignement_gauche
if alignement$="D" then gosub alignement_droit
if alignement$="C" then gosub alignement_centre
return

alignement_centre:
lv=len(vtab$):if lv>(let-2) then message "Longueur élément > largeur tableau":terminate
if even(lv)=1 then n=(let-lv)/2
if even(lv)=0 then n=(let-lv)/2
if ne=2 and frac(n)=0 then ptab$="|"+string$(n," ")+vtab$+string$(n," ")+"|"
if ne=2 and frac(n)<>0 then n=n+0.5:ptab$="|"+string$(n," ")+vtab$+string$(n-1," ")+"|"
if ne>2 and frac(n)=0 then ptab$=string$(n," ")+vtab$+string$(n," ")+"|"
if ne>2 and frac(n)<>0 then n=n+0.5:ptab$=string$(n," ")+vtab$+string$(n-1," ")+"|"
return

alignement_droit:
lv=len(vtab$):if lv>(let-2) then message "Longueur élément > largeur tableau":terminate
if ne=2 then ptab$="|"+string$(let-(lv+1)," ")+vtab$+" |"
if ne>2 then ptab$=string$(let-(lv+1)," ")+vtab$+" |"
return

alignement_gauche:
lv=len(vtab$):if lv>(let-2) then message "Longueur élément > largeur tableau":terminate
if ne=2 then ptab$="| "+vtab$+string$(let-(lv+1)," ")+"|"
if ne>2 then ptab$=" "+vtab$+string$(let-(lv+1)," ")+"|"
return

' ==============================================================================
'                  Sous Prog de Formatage nombre (genre USING)
' ==============================================================================
nombre:
' if nombre<0 then nombre$=str$(nombre):return
v$="":a$="":limit$="":nombre$="":n=0:lg=0:ln=0:nbcav=0:limit=0:nbzav=0:nbzap=0
if left$(format_nombre$,1)="&" then esp$=" "
if left$(format_nombre$,1)<>"&" then esp$="0"
lg=len(format_nombre$)
if lg=0 then message "Format nombre incorrect (longeur format = 0)":terminate
gosub recheche_la_virgule:' controle de la longeur du format et du nombre de chiffre après la virgule
if v$="OK" and nbcav=0 then message "Format nombre incorrect"+chr$(13)+"# oublié après la virgule":terminate
if nbcav>0 then limit$=string$(lg-(nbcav+1),"9")+"."+string$(nbcav,"9"):gosub avec_virgule
if nbcav=0 then limit$=string$(lg-(nbcav),"9"):gosub sans_virgule
limit=val(limit$)
if nombre > limit then message "Format nombre incorrect (valeur > Format)"
return

avec_virgule:
nombre$=str$(nombre):ln=len(nombre$)
for n=1 to ln
a$=mid$(nombre$,n,1)
if a$="."then nbzap=ln-n
if a$<>"." then n=n
next n
if left$(format_nombre$,1)="&" then lg=lg+1
lg=lg-1:nbzav=lg-(ln+nbcav)
if nombre<0 then esp$=" "
if nbzap>nbcav then message "Format nombre incorrect: Saisie > nb de zéro après la virgule":terminate
if nbzap>nbcav-1 then nombre$=string$(nbzav,esp$)+nombre$:return
if nbzap=0 then nombre$=string$(nbzav,esp$)+nombre$+".00"
if nbzap>0 then nombre$=string$(nbzav,esp$)+nombre$+string$((nbcav-1),"0")
return

sans_virgule:
lg=lg-1:nbzav=lg
if nbzav=0 then nombre$=str$(nombre)
if nbzav>0 then nombre$=string$(nbzav,esp$)+str$(nombre)
return

recheche_la_virgule:
for n=1 to lg
a$=mid$(format_nombre$,n,1)
if a$="." then nbcav=lg-n:v$="OK"
if a$<>"." and a$<>"#" and a$<>"&" then message "Format nombre incorrect (caractère <> de . ou #)"
next n
return
' ------------------------------------------------------------------------------
fin:
terminate


N'hésiter pas à me signaler d'éventuelles erreurs.
Il y a un paquet de rem pour explication.
A+


Dernière édition par Jean Claude le Mer 27 Jan 2010 - 9:10, édité 5 fois
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

tableau - Création simplifiée d'un tableau Empty
MessageSujet: Re: Création simplifiée d'un tableau   tableau - Création simplifiée d'un tableau EmptyMar 26 Jan 2010 - 22:07

Je viens de rééditer avec correction du tuto mais pas du programme.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

tableau - Création simplifiée d'un tableau Empty
MessageSujet: Re: Création simplifiée d'un tableau   tableau - Création simplifiée d'un tableau EmptyMer 27 Jan 2010 - 8:28

Je viens de m'apercevoir que le programme que je vous est fourni ne fonctionnait pas. Je viens de le rééditer. (une histoire de # en trop)
A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

tableau - Création simplifiée d'un tableau Empty
MessageSujet: Re: Création simplifiée d'un tableau   tableau - Création simplifiée d'un tableau EmptyMer 27 Jan 2010 - 9:15

Je viens d'ajouter cette ligne après la ligne 199
Code:
if left$(format_nombre$,1)="&" then lg=lg+1

J'ai corrigé une erreur de syntaxe à la ligne 96
Code:
if montant>9999999 then message "Entrez un montant < à 10.000.000":text 2,"":a$="":return
il manquait " après 10.000.000.

A+
Revenir en haut Aller en bas
Invité
Invité




tableau - Création simplifiée d'un tableau Empty
MessageSujet: Re: Création simplifiée d'un tableau   tableau - Création simplifiée d'un tableau EmptyVen 29 Jan 2010 - 20:45

Je viens de regarder ton programme rapidement. Effectivement il y a une simplification du nombre de ligne. Le choix ici est de faire un exemple pour une application. Moi j'ai fait le choix d'avoir un format universel pour chaque cas particulier. Ça ne me donne pas forcément raison.
Par contre avec mon ancienne session, je n'avait aucun son, alors qu'avec ton programme, chaque entrée déclenche un son, et c'est nouveau pour moi. Ce qui ne fonctionnait pas avec ma session précédente marche sur celle-ci.
Comment se fait-il qu'il y ait un son à chaque entrée. Je ne vois pas de BEEP.
Félicitation
A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

tableau - Création simplifiée d'un tableau Empty
MessageSujet: Re: Création simplifiée d'un tableau   tableau - Création simplifiée d'un tableau EmptyVen 29 Jan 2010 - 20:56

Oui c'est vrai çà, il y a beep à chaque entrée, je ne m'en était pas aperçu vu que je ne met pas le son. C'est tout de même curieux. Merci d'avoir jetté un coup d'oeil. Tu deviens comme Jack, tu n'as plus de temps.

A+
Revenir en haut Aller en bas
Invité
Invité




tableau - Création simplifiée d'un tableau Empty
MessageSujet: Re: Création simplifiée d'un tableau   tableau - Création simplifiée d'un tableau EmptySam 30 Jan 2010 - 3:06

Normal, tu as bien voulu regarder ma boite d'alerte, c'est la moindre des choses
A+
Revenir en haut Aller en bas
Contenu sponsorisé





tableau - Création simplifiée d'un tableau Empty
MessageSujet: Re: Création simplifiée d'un tableau   tableau - Création simplifiée d'un tableau Empty

Revenir en haut Aller en bas
 
Création simplifiée d'un tableau
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mise en page Html simplifiée
» Tableau mulitidimensionnel
» Transmission d'un tableau à une SUB
» Lire un Tableau
» FILEBIN

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: