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
» Form(résolu)
Une grille en caractères graphiques Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
Une grille en caractères graphiques Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
Une grille en caractères graphiques Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
Une grille en caractères graphiques Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
Une grille en caractères graphiques Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Une grille en caractères graphiques Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Une grille en caractères graphiques Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Une grille en caractères graphiques Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Une grille en caractères graphiques Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Une grille en caractères graphiques Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Une grille en caractères graphiques Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Une grille en caractères graphiques Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Une grille en caractères graphiques Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Une grille en caractères graphiques Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Une grille en caractères graphiques Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

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 : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

 

 Une grille en caractères graphiques

Aller en bas 
4 participants
AuteurMessage
JL35




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

Une grille en caractères graphiques Empty
MessageSujet: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyJeu 5 Mar 2015 - 22:13

Pour les nostalgiques du QBasic, s'il en reste, une grille en caractères graphiques comme on faisait autrefois:
Code:
DIM p%,a$,nc%,nr%,wc%,hr%,lh$,le$,lt$,lb$,hc%,i%,j%,x%,y%,c%,r%,xc%,yc%

nc% = 4: nr% = 5: ' nombre de colonnes, rangées
wc% = 12: hr% = 1: ' largeur et hauteur d'une case (en caractères)
x% = 60: y% = 40: ' coordonnées de la grille (coin supérieur gauche)
p% = 1: PICTURE p%: FULL_SPACE p%
Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)

c% = 3: r% = 4
Gridpos(p%,x%,y%,wc%,hr%,c%,r%)
FONT_NAME p%,"Arial": FONT_SIZE p%,12: PRINT_TARGET_IS p%
PRINT_LOCATE xc%,yc%: PRINT "Abcdef"
END

SUB Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)
' Création d'une grille en caractères graphiques sur l'objet p% (picture)
' nc% colonnes de largeur wc%, nr% rangées de hauteur hr% (en caractères)
DIM_LOCAL i%,j%,lh$,le$,lt$,lb$
PRINT_TARGET_IS p%: FONT_NAME p%,"BatangChe": FONT_SIZE p%,12
hc% = TEXT_HEIGHT(CHR$(5),p%)
a$ = STRING$(wc%,CHR$(6))
lh$ = CHR$(1)
FOR i%= 1 TO nc%: lh$ = lh$+a$+CHR$(22): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(2)
le$ = CHR$(5)
FOR i% = 1 TO nc%: le$=le$+STRING$(wc%," ")+CHR$(5): NEXT i%
lt$ = CHR$(25)
FOR i% = 1 TO nc%: lt$=lt$+a$+CHR$(16): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(23)
lb$ = CHR$(3)
FOR i% = 1 TO nc%: lb$=lb$+a$+CHR$(21): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(4)
PRINT_LOCATE x%,y%: PRINT lh$: y%=y%+hc%
FOR i%=1 TO nr%
    FOR j% = 1 TO hr%: PRINT_LOCATE x%,y%: PRINT le$: y%=y%+hc%: NEXT j%
    IF i%<nr% THEN PRINT_LOCATE x%,y%: PRINT lt$: y%=y%+hc%
NEXT i%
PRINT_LOCATE x%,y%: PRINT lb$
END_SUB

SUB Gridpos(p%,x%,y%,wc%,hr%,c%,r%)
' Coordonnées de la cellule c%/r% de la grille décrite (c% et r% = 1 à n), en pixels
DIM_LOCAL lc%,hc%
FONT_NAME p%,"BatangChe": FONT_SIZE p%,12
lc% = TEXT_WIDTH(CHR$(16),p%): hc% = TEXT_HEIGHT(CHR$(16),p%)
xc% = 1+(wc%+1)*(c%-1): ' en caractères
xc% = x%+xc%*lc%: ' absolu en pixels, dans p%
yc% = 1+(hr%+1)*(r%-1): ' en caractères
yc% = y%+yc%*hc%: ' absolu en pixels, dans p%
END_SUB
Une grille en caractères graphiques Grille11
6/3 ajout positionnement dans la grille


Dernière édition par JL35 le Ven 6 Mar 2015 - 11:13, édité 2 fois
Revenir en haut Aller en bas
papydall

papydall


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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyJeu 5 Mar 2015 - 22:55

Décidément, on revient toujours à ses premières amours !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyJeu 5 Mar 2015 - 23:12

Eh oui papydall, comme dit la chanson:
Je vous parle d'un temps
Que les moins de 20 60 ans
Ne peuvent pas connaître...
Revenir en haut Aller en bas
papydall

papydall


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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 0:03

Tant que nous y sommes

Code:

DIM p%,a$,nc%,nr%,wc%,hr%,lh$,le$,lt$,lb$,hc%,i%,j%,x%,y%
width 0,800
nc% = 4: nr% = 5: ' nombre de colonnes, rangées
wc% = 12: hr% = 1: ' largeur et hauteur d'une case (en caractères)
x% = 60: y% = 40: ' coordonnées de la grille (coin supérieur gauche)
p% = 1: PICTURE p%: FULL_SPACE p%
Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)
END

SUB Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)
' Création d'une grille en caractères graphiques sur l'objet p% (picture)
' nc% colonnes de largeur wc%, nr% rangées de hauteur hr% (en caractères)
DIM_LOCAL i%,j%,lh$,le$,lt$,lb$
PRINT_TARGET_IS p%: FONT_NAME p%,"Terminal": FONT_SIZE p%,12
hc% = TEXT_HEIGHT(CHR$(186),p%)
a$ = STRING$(wc%,CHR$(205))
lh$ = CHR$(201)
FOR i%= 1 TO nc%: lh$ = lh$+a$+CHR$(203): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(187)
le$ = CHR$(186)
FOR i% = 1 TO nc%: le$=le$+STRING$(wc%," ")+CHR$(186): NEXT i%
lt$ = CHR$(204)
FOR i% = 1 TO nc%: lt$=lt$+a$+CHR$(206): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(185)
lb$ = CHR$(200)
FOR i% = 1 TO nc%: lb$=lb$+a$+CHR$(202): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(188)
PRINT_LOCATE x%,y%: PRINT lh$: y%=y%+hc%
FOR i%=1 TO nr%
    FOR j% = 1 TO hr%: PRINT_LOCATE x%,y%: PRINT le$: y%=y%+hc%: NEXT j%
    IF i%<nr% THEN PRINT_LOCATE x%,y%: PRINT lt$: y%=y%+hc%
NEXT i%
PRINT_LOCATE x%,y%: PRINT lb$
END_SUB

Une grille en caractères graphiques Grille11
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 1:12

Je m'insurge, les quarantenaire ont pu connaitre. A 12 ans je manipulais ces choses et je saisissait les page de mon mag préféré de l'époque: hebdogiciel...
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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 8:03

@Jicehel, la programmation, t'es tombé dedans à la naissance ?
Nous "les vieux" ont a dû attendre les premiers ordinateurs familiale !
Je ne parle pas "des ancêtres" qui jouaient avec des cartes perforées Very Happy Razz geek

@JL35,
Tu m'as fait couler une larme de nostalgie, je me suis souvenu de la fierté que j'ai eu la première fois que j'ai réussi à programmer une grille similaire. Very Happy
c'était dans les années 85/86.

Merci pour la SUB, ça peut toujours servir.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 8:15

Mon Hector a été mon cadeau de communion, je révais d'avoir un ordi depuis au moins 3 ans ... Wink
Revenir en haut Aller en bas
JL35




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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 10:16

Jicehel, le Mozart de l'informatique... les enfants de maintenant sont pareils, sauf qu'ils n'ont aucun mérite, ils baignent dedans en permanence.
J'ai dit 60 ans, disons dans les 45/50 ans, au moins (sauf pour les surdoués de naissance... suivez mon regard).
Comme tu dis Jean Claude, c'était le bon temps, on découvrait en permanence et les quelques revues étaient pleines de programmes à essayer...
J'ai joué (enfin, si on peut dire) avec les cartes perforées, c'était pas de la tarte, des piles de plusieurs dizaines de centimètres pour un programme, quand tu répandais ça par terre devant le lecteur ! (j'ai même fait du télégraphe en morse, ça devait être au moyen âge, ou un peu après).

Pour la grille, on doit pouvoir faire une sub qui donne les coordonnées d'une case en fonction de colonne/rangée, pour écrire dedans.
D'ailleurs, c'est fait.
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 11:20

Ca combiné à quelques procédures existantes de mise en forme, ça commence à être sympa.
Comme amélioration, je proposerais donc le centrage du texte, l'alignement à droite ou à gauche, centré verticalement, aligné en haut ou en bas de la cellule et le troncage du texte au nombre de caractères pouvant être affichées dans une case. Ca fait déjà un beau petit challenge, non ? (Défit à relever ou non selon vos envies, bien sûr)
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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 11:44

Oui , JL35 réinvente le GRID, avec quelques avantages sur celui de Panoramic, c'est qu'on peut gérer les attributs du texte par cellule.

Un exemple j'ai ajouté une petite procédure pour effacer le contenu de la cellule.
Code:
DIM p%,a$,nc%,nr%,wc%,hr%,lh$,le$,lt$,lb$,hc%,i%,j%,x%,y%,c%,r%,xc%,yc%,cc$

nc% = 4: nr% = 5: ' nombre de colonnes, rangées
wc% = 15: hr% = 1: ' largeur et hauteur d'une case (en caractères)
x% = 60: y% = 40: ' coordonnées de la grille (coin supérieur gauche)
p% = 1: PICTURE p%: FULL_SPACE p%
Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)

c% = 3: r% = 4: cc$="patientez 3 Sec"
Gridpos(p%,x%,y%,wc%,hr%,c%,r%)
FONT_NAME p%,"Arial": FONT_SIZE p%,12: PRINT_TARGET_IS p%
PRINT_LOCATE xc%,yc%: font_color p%,0,0,255 : PRINT cc$
wait 3000
GridClear(p%,xc%,yc%,wc%,hr%,c%,r%)
END

SUB GridClear(p%,xx%,yx%,wc%,hr%,c%,r%)
    ' efface le contenu de la cellule xc%,yc% et vide la variable cc$ (cc$ pour contenu_cellule$)
    DIM_LOCAL lc%,hc%
    lc% = TEXT_WIDTH(CHR$(16),p%)
    cc$="" : PRINT_LOCATE xc%,yc%: PRINT string$(wc%+lc%," ")
END_SUB

SUB Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)
' Création d'une grille en caractères graphiques sur l'objet p% (picture)
' nc% colonnes de largeur wc%, nr% rangées de hauteur hr% (en caractères)
DIM_LOCAL i%,j%,lh$,le$,lt$,lb$
PRINT_TARGET_IS p%: FONT_NAME p%,"BatangChe": FONT_SIZE p%,12
hc% = TEXT_HEIGHT(CHR$(5),p%)
a$ = STRING$(wc%,CHR$(6))
lh$ = CHR$(1)
FOR i%= 1 TO nc%: lh$ = lh$+a$+CHR$(22): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(2)
le$ = CHR$(5)
FOR i% = 1 TO nc%: le$=le$+STRING$(wc%," ")+CHR$(5): NEXT i%
lt$ = CHR$(25)
FOR i% = 1 TO nc%: lt$=lt$+a$+CHR$(16): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(23)
lb$ = CHR$(3)
FOR i% = 1 TO nc%: lb$=lb$+a$+CHR$(21): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(4)
PRINT_LOCATE x%,y%: PRINT lh$: y%=y%+hc%
FOR i%=1 TO nr%
    FOR j% = 1 TO hr%: PRINT_LOCATE x%,y%: PRINT le$: y%=y%+hc%: NEXT j%
    IF i%<nr% THEN PRINT_LOCATE x%,y%: PRINT lt$: y%=y%+hc%
NEXT i%
PRINT_LOCATE x%,y%: PRINT lb$
END_SUB

SUB Gridpos(p%,x%,y%,wc%,hr%,c%,r%)
' Coordonnées de la cellule c%/r% de la grille décrite (c% et r% = 1 à n), en pixels
DIM_LOCAL lc%,hc%
FONT_NAME p%,"BatangChe": FONT_SIZE p%,12
lc% = TEXT_WIDTH(CHR$(16),p%): hc% = TEXT_HEIGHT(CHR$(16),p%)
xc% = 1+(wc%+1)*(c%-1): ' en caractères
xc% = x%+xc%*lc%: ' absolu en pixels, dans p%
yc% = 1+(hr%+1)*(r%-1): ' en caractères
yc% = y%+yc%*hc%: ' absolu en pixels, dans p%
END_SUB

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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 12:06

J'ai changé le nom des variables pour rendre le code plus facile à lire.

Bon, ça augmente la longueur des lignes, mais ça devrait éviter un télescopage de variables si on l'insère dans un autre code.
Code:
DIM picture_grid%,a$,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case%
dim lh$,le$,lt$,lb$,hCol_Grid%,i%,j%,Left_Grid%,Top_Grid%,Col_Grid%,Rang_Grid%
dim xCol_Grid%,yCol_Grid%,Contenu_cellule$

Nb_Col% = 4: Nb_Rang% = 5: ' nombre de colonnes, rangées
Width_Case% = 15: Height_Case% = 1: ' largeur et hauteur d'une case (en caractères)
Left_Grid% = 10: Top_Grid% = 10: ' coordonnées de la grille (coin supérieur gauche)
picture_grid% = 1: PICTURE picture_grid%: FULL_SPACE picture_grid%
Gridcar(picture_grid%,Left_Grid%,Top_Grid%,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case%)

Col_Grid% = 3: Rang_Grid% = 4: Contenu_cellule$="patientez 3 Sec"
Gridpos(picture_grid%,Left_Grid%,Top_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%)
FONT_NAME picture_grid%,"Arial": FONT_SIZE picture_grid%,12: PRINT_TARGET_IS picture_grid%
PRINT_LOCATE xCol_Grid%,yCol_Grid%: font_color picture_grid%,0,0,255 : PRINT Contenu_cellule$
wait 3000
GridClear(picture_grid%,xCol_Grid%,yCol_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%)
END

SUB GridClear(picture_grid%,xLeft_Grid%,yLeft_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%)
    ' efface le contenu de la cellule xCol_Grid%,yCol_Grid% et vide la variable Contenu_cellule$
    DIM_LOCAL lCol_Grid%
    lCol_Grid% = TEXT_WIDTH(CHR$(16),picture_grid%)
    Contenu_cellule$="" : PRINT_LOCATE xCol_Grid%,yCol_Grid%: PRINT string$(Width_Case%+lCol_Grid%," ")
END_SUB

SUB Gridcar(picture_grid%,Left_Grid%,Top_Grid%,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case%)
' Création d'une grille en caractères graphiques sur l'objet picture_grid% (picture)
' Nb_Col% colonnes de largeur Width_Case%, Nb_Rang% rangées de hauteur Height_Case% (en caractères)
DIM_LOCAL i%,j%,lh$,le$,lt$,lb$
PRINT_TARGET_IS picture_grid%: FONT_NAME picture_grid%,"BatangChe": FONT_SIZE picture_grid%,12
hCol_Grid% = TEXT_HEIGHT(CHR$(5),picture_grid%)
a$ = STRING$(Width_Case%,CHR$(6))
lh$ = CHR$(1)
FOR i%= 1 TO Nb_Col%: lh$ = lh$+a$+CHR$(22): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(2)
le$ = CHR$(5)
FOR i% = 1 TO Nb_Col%: le$=le$+STRING$(Width_Case%," ")+CHR$(5): NEXT i%
lt$ = CHR$(25)
FOR i% = 1 TO Nb_Col%: lt$=lt$+a$+CHR$(16): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(23)
lb$ = CHR$(3)
FOR i% = 1 TO Nb_Col%: lb$=lb$+a$+CHR$(21): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(4)
PRINT_LOCATE Left_Grid%,Top_Grid%: PRINT lh$: Top_Grid%=Top_Grid%+hCol_Grid%
FOR i%=1 TO Nb_Rang%
    FOR j% = 1 TO Height_Case%: PRINT_LOCATE Left_Grid%,Top_Grid%: PRINT le$: Top_Grid%=Top_Grid%+hCol_Grid%: NEXT j%
    IF i%<Nb_Rang% THEN PRINT_LOCATE Left_Grid%,Top_Grid%: PRINT lt$: Top_Grid%=Top_Grid%+hCol_Grid%
NEXT i%
PRINT_LOCATE Left_Grid%,Top_Grid%: PRINT lb$
END_SUB

SUB Gridpos(picture_grid%,Left_Grid%,Top_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%)
' Coordonnées de la cellule Col_Grid%/Rang_Grid% de la grille décrite (Col_Grid% et Rang_Grid% = 1 à n), en pixels
DIM_LOCAL lCol_Grid%,hCol_Grid%
FONT_NAME picture_grid%,"BatangChe": FONT_SIZE picture_grid%,12
lCol_Grid% = TEXT_WIDTH(CHR$(16),picture_grid%): hCol_Grid% = TEXT_HEIGHT(CHR$(16),picture_grid%)
xCol_Grid% = 1+(Width_Case%+1)*(Col_Grid%-1): ' en caractères
xCol_Grid% = Left_Grid%+xCol_Grid%*lCol_Grid%: ' absolu en pixels, dans picture_grid%
yCol_Grid% = 1+(Height_Case%+1)*(Rang_Grid%-1): ' en caractères
yCol_Grid% = Top_Grid%+yCol_Grid%*hCol_Grid%: ' absolu en pixels, dans picture_grid%
END_SUB

A+
Revenir en haut Aller en bas
papydall

papydall


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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 12:23

Ouwais !!
Ma grille à double ligne a passé inaperçue ! Crying or Very sad
Personne ne lit entre les lignes ? Shocked
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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 13:05

Ben, heu... C'est quoi le plus par rapport au code de JL35, à part avoir changé la police de caractères pour obtenir la grille double. S'il y a autre chose ça ne m'a pas frappé.
Dis-nous ce qu'on a raté.

A+

PS: Si ! j'y vois un plus, l'utilisation de la grille double permet de bien isoler chaque cellule.
Revenir en haut Aller en bas
JL35




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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 13:12

J'ai vu papydall, c'est très joli, mais ça ne change pas grand chose au principe qui était plutôt un exercice de style, avec les caractères graphiques.

@Jean Claude
Je ne sais pas si ça vaut le coup de poursuivre dans cette voie, il y a quand même plus simple pour maîtriser le style et la couleur dans une grille.
J'ai aussi fait quelques subs qui définissent une grille à raison d'un picture par cellule avec toutes les fantaisies possibles pour les cellules: textes variés, images, etc.
Mais on doit pouvoir faire plus simple avec le tout dans un seul picture, avec les mêmes possibilités. Tiens je vais regarder ça...

Salut Jean Claude, on s'est croisés Very Happy
Revenir en haut Aller en bas
papydall

papydall


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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 13:32

Code:

DIM picture_grid%,a$,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case% ,hc%
dim lh$,le$,lt$,lb$,hCol_Grid%,i%,j%,Left_Grid%,Top_Grid%,Col_Grid%,Rang_Grid%
dim xCol_Grid%,yCol_Grid%,Contenu_cellule$
width 0,1200
Nb_Col% = 4: Nb_Rang% = 8: ' nombre de colonnes, rangées
Width_Case% = 23: Height_Case% = 1: ' largeur et hauteur d'une case (en caractères)
Left_Grid% = 10: Top_Grid% = 10: ' coordonnées de la grille (coin supérieur gauche)
picture_grid% = 1: PICTURE picture_grid%: FULL_SPACE picture_grid%
Gridcar(picture_grid%,Left_Grid%,Top_Grid%,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case%)

Col_Grid% = 1: Rang_Grid% = 1: Contenu_cellule$="NOM" : Au_travail()
Col_Grid% = 1: Rang_Grid% = 2: Contenu_cellule$="Le Vieux" : Au_travail()
Col_Grid% = 1: Rang_Grid% = 3: Contenu_cellule$="Le Nostalgique" : Au_travail()
Col_Grid% = 1: Rang_Grid% = 4: Contenu_cellule$="Le Jeune" : Au_travail()
Col_Grid% = 1: Rang_Grid% = 5: Contenu_cellule$="L'homme actuel" : Au_travail()

Col_Grid% = 2: Rang_Grid% = 1: Contenu_cellule$="IL REVE DE" : Au_travail()
Col_Grid% = 2: Rang_Grid% = 2: Contenu_cellule$="CARTES PERFOREES" : Au_travail()
Col_Grid% = 2: Rang_Grid% = 3: Contenu_cellule$="PROGRAMMER UNE GRILLE" : Au_travail()
Col_Grid% = 2: Rang_Grid% = 4: Contenu_cellule$="SON CADEAU DE COMMUNION" : Au_travail()
Col_Grid% = 2: Rang_Grid% = 5: Contenu_cellule$="SE CASSER LA TETE POUR PROGRAMMER UNE GRILLE EN CARACTERES GRAPHIQUES" : Au_travail()
Col_Grid% = 1: Rang_Grid% = 6: Contenu_cellule$="***** ***** ***** IL Y EN A POUR TOUS LES GOUTS. MERCI PANORAMIC!!!" : Au_travail()
Col_Grid% = 1: Rang_Grid% = 7: Contenu_cellule$="***** ***** ***** MEME POUR LES ADEPTES DE LA POLLUTION ***** ****** *****" : Au_travail()
END
rem ============================================================================

SUB Gridpos(picture_grid%,Left_Grid%,Top_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%)
' Coordonnées de la cellule Col_Grid%/Rang_Grid% de la grille décrite (Col_Grid% et Rang_Grid% = 1 à n), en pixels
DIM_LOCAL lCol_Grid%,hCol_Grid%
FONT_NAME picture_grid%,"Terminal": FONT_SIZE picture_grid%,12
lCol_Grid% = TEXT_WIDTH(CHR$(16),picture_grid%): hCol_Grid% = TEXT_HEIGHT(CHR$(16),picture_grid%)
xCol_Grid% = 1+(Width_Case%+1)*(Col_Grid%-1): ' en caractères
xCol_Grid% = Left_Grid%+xCol_Grid%*lCol_Grid%: ' absolu en pixels, dans picture_grid%
yCol_Grid% = 1+(Height_Case%+1)*(Rang_Grid%-1): ' en caractères
yCol_Grid% = Top_Grid%+yCol_Grid%*hCol_Grid%: ' absolu en pixels, dans picture_grid%
END_SUB


rem ============================================================================
SUB Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)
' Création d'une grille en caractères graphiques sur l'objet p% (picture)
' nc% colonnes de largeur wc%, nr% rangées de hauteur hr% (en caractères)
DIM_LOCAL i%,j%,lh$,le$,lt$,lb$
PRINT_TARGET_IS p%: FONT_NAME p%,"Terminal": FONT_SIZE p%,12
hc% = TEXT_HEIGHT(CHR$(186),p%)
a$ = STRING$(wc%,CHR$(205))
lh$ = CHR$(201)
FOR i%= 1 TO nc%: lh$ = lh$+a$+CHR$(203): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(187)
le$ = CHR$(186)
FOR i% = 1 TO nc%: le$=le$+STRING$(wc%," ")+CHR$(186): NEXT i%
lt$ = CHR$(204)
FOR i% = 1 TO nc%: lt$=lt$+a$+CHR$(206): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(185)
lb$ = CHR$(200)
FOR i% = 1 TO nc%: lb$=lb$+a$+CHR$(202): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(188)
PRINT_LOCATE x%,y%: PRINT lh$: y%=y%+hc%
FOR i%=1 TO nr%
    FOR j% = 1 TO hr%: PRINT_LOCATE x%,y%: PRINT le$: y%=y%+hc%: NEXT j%
    IF i%<nr% THEN PRINT_LOCATE x%,y%: PRINT lt$: y%=y%+hc%
NEXT i%
PRINT_LOCATE x%,y%: PRINT lb$
END_SUB
rem ============================================================================
SUB Au_travail()
    Gridpos(picture_grid%,Left_Grid%,Top_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%)
    FONT_NAME picture_grid%,"Terminal": FONT_SIZE picture_grid%,12: PRINT_TARGET_IS picture_grid%
    PRINT_LOCATE xCol_Grid%,yCol_Grid%: font_color picture_grid%,0,0,255 : PRINT Contenu_cellule$
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 14:09

En bien plus facile à maîtriser, avec un picture/grille (plus de caractères spéciaux, tout est graphique):
Code:
LABEL Afcl
DIM pg%,x%,y%,nc%,nr%,wc%,hr%,c%,r%,tx$

pg% = 1
wc% = 90: hr% = 35
nc% = 5: nr% = 5
x% = 50: y% = 30
GridPict(pg%,x%,y%,nc%,nr%,wc%,hr%)
c% = 4: r% = 4
GridPictxy(pg%,wc%,hr%,c%,r%)
2D_PEN_COLOR 255,255,0: ' 2D_FILL_COLOR 255,255,0
2D_RECTANGLE x%,y%,x%+wc%-1,y%+hr%-1: ' fond jaune
FONT_NAME pg%,"Arial": FONT_SIZE pg%,12
GridPictEcr(pg%,wc%,hr%,c%,r%,"Ma bibliothèque",0,1,1): ' centré H et V, tronqué
2D_FILL_COLOR 255,255,255
FONT_NAME pg%,"Bookdings": FONT_SIZE pg%,24
GridPictEcr(pg%,wc%,hr%,3,4,"  "+CHR$(35),0,0,0)
GridPictEcr(pg%,wc%,hr%,2,2,CHR$(66),0,0,0)
ON_CLICK pg%,Afcl
END
' ==============================================================================
Afcl:
GridPictClic(pg%,wc%,hr%)
MESSAGE "Rangée= "+STR$(r%)+", Colonne= "+STR$(c%)
RETURN
' ==============================================================================
SUB GridPict(pg%,x%,y%,nc%,nr%,wc%,hr%)
' Création d'un picture/grille npg% en x%,y%, nc%/nr% colonnes/rangées,
' wc%,hr% dimensions cellules largeur/hauteur (pixels)
DIM_LOCAL i%
PICTURE pg%: TOP pg%,y%: LEFT pg%,x%: WIDTH pg%,nc%*wc%+1: HEIGHT pg%,nr%*hr%+1
2D_TARGET_IS pg%
FOR i% = 0 TO WIDTH(pg%) STEP wc%
    2D_LINE i%,0,i%,HEIGHT(pg%)
NEXT i%
FOR i% = 0 TO HEIGHT(pg%) STEP hr%
    2D_LINE 0,i%,WIDTH(pg%),i%
NEXT i%
END_SUB
' ==============================================================================
SUB GridPictxy(pg%,wc%,hr%,c%,r%)
' Coordonnées de la cellule colonne c%, rangée r% -> x%,y% (picture/grille pg%)
x% = (c%-1)*wc%+1
y% = (r%-1)*hr%+1
END_SUB
' ==============================================================================
SUB GridPictEcr(pg%,wc%,hr%,c%,r%,tx$,ah%,av%,trnc%)
' Ecriture texte tx$ dans la cellule c%,r% de la picture/grille pg%
' (attributs courants): ah%,av% = alignement horizontal et vertical
' (0 gauche ou haut, 1 centre, 2 droite ou bas)
' trnc% = 1: troncature du texte pour ne pas dépasser la cellule
DIM_LOCAL x%,y%,wt%,ht%
x% = (c%-1)*wc%+3
y% = (r%-1)*hr%+1
wt% = TEXT_WIDTH(tx$,pg%): ht% = TEXT_HEIGHT(tx$,pg%)
PRINT_TARGET_IS pg%
IF trnc%=1
    WHILE wt%>=wc%: tx$=LEFT$(tx$,LEN(tx$)-1): wt% = TEXT_WIDTH(tx$,pg%): END_WHILE
END_IF
IF ah% > 0
    SELECT ah%
        CASE 1: WHILE wt%<wc%: tx$=" "+tx$+" ": wt% = TEXT_WIDTH(tx$,pg%): END_WHILE
        CASE 2: WHILE wt%<wc%: tx$=" "+tx$: wt% = TEXT_WIDTH(tx$,pg%): END_WHILE
    END_SELECT
    tx$ = RIGHT_POS$(tx$,2)
END_IF
IF av% > 0
    SELECT av%
        CASE 1: y% = y%+(hr%-ht%)/2
        CASE 2: y% = y%+ hr%-ht%-1
    END_SELECT
END_IF
PRINT_LOCATE x%,y%: PRINT RTRIM$(tx$)
END_SUB
' ==============================================================================
SUB GridPictClic(pg%,wc%,hr%)
' Clic souris dans la grille -> rangée / colonne dans r%, c%
DIM_LOCAL x%,y%
x% = MOUSE_X_LEFT_DOWN(pg%): y% = MOUSE_Y_LEFT_DOWN(pg%)
c% = 1+INT(x%/wc%): r% = 1+INT(y%/hr%)
END_SUB
' ==============================================================================
Très facile à améliorer, et on peut mettre ce qu'on veut dans les cases (y compris des images, ici ce sont des caractères spéciaux de la police Bookdings):
Une grille en caractères graphiques Grille13

PS j'ai ajouté l'alignement du texte dans les cellules (gauche, droite, centré, horizontal et vertical).
+ la troncature (éventuelle) si ça dépasse, plus la conversion clic souris -> rangée, colonne


Dernière édition par JL35 le Ven 6 Mar 2015 - 16:35, édité 1 fois
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 15:29

Ca a été vite. Le petit défit qui te reste maintenant c'est le paramètre d'écriture dans une cellule pour que ça tronque ou non les caractères qui "débordent" de la cellule.
Après, il y a la sélection d'une case quand on clique sur le picture, mais c'est mathématiquement simple avec les coordonnées du clic et la taille des cellules. Mais bon j'arrète là, je ne sais pas si vous vouliez aller si loin avec cet objet.
Revenir en haut Aller en bas
JL35




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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 15:49

Tout ça est assez facile à faire, ça ne correspond plus (même si c'est voisin, et beaucoup plus pratique à manipuler) au titre du topic: grille en caractères graphiques. Mais bon...

Au départ, c'est parti du fait que j'étais tout content d'avoir trouvé une police fixe (BatangChe) contenant tous les caractères pour faire une grille. En fait presque toutes les polices contiennent ces caractères, au même endroit (c'est surtout intéressant en fixe), SAUF le caractère 'coin supérieur gauche' code 01 qui ne figure pas dans la plupart, va savoir pourquoi. Seulement dans BatangChe et Terminal comme l'a fait remarquer papydall (dans Terminal ils sont plus loin dans les codes, et il y a les doubles, et leur emplacement est identique à l'emplacement dans les polices QBasic de l'époque: j'ai gardé mes aide-mémoire. Jean Claude, si tu as gardé tes programmes de ce temps-là  Very Happy ).

Fastoche Jicehel: troncature ou non, conversion clic en rangée/colonne, c'est fait.
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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 17:38

Tel quel, ce programme peut être utile.

@JL35,
J'ai tout mes programmes en QB, mais aujourd’hui ils n'offrent plus d'intérêts car la plupart sont disponibles en Panoramic (Surtout depuis l'arrivée des SUB).
De plus il sont sur disquette, et il y bien longtemps que j'ai branché le lecteur.

A+
Revenir en haut Aller en bas
JL35




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

Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques EmptyVen 6 Mar 2015 - 18:12

Les miens sont depuis longtemps aux oubliettes, même ceux en FreeBasic dont j'ai fait pas mal, mais Panoramic c'est quand même autre chose, notamment visuellement, et avec la gestion des événements...
J'ai encore les disquettes, et sans doute quelques cassettes de mon TRS-80 (super bécane... pour l'époque !)
Revenir en haut Aller en bas
Contenu sponsorisé





Une grille en caractères graphiques Empty
MessageSujet: Re: Une grille en caractères graphiques   Une grille en caractères graphiques Empty

Revenir en haut Aller en bas
 
Une grille en caractères graphiques
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» GestCompte
» Graphiques
» Quelques graphiques de plus
» grille 3D
» Objet LIST avec attributs graphiques et éléments éditables ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: