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
» SineCube
Justfication à droite et centrage de textes Emptypar Marc Aujourd'hui à 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Justfication à droite et centrage de textes Emptypar Marc Aujourd'hui à 12:22

» Philharmusique
Justfication à droite et centrage de textes Emptypar jjn4 Hier à 13:58

» PANORAMIC V 1
Justfication à droite et centrage de textes Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Justfication à droite et centrage de textes Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Justfication à droite et centrage de textes Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Justfication à droite et centrage de textes Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Justfication à droite et centrage de textes Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Justfication à droite et centrage de textes Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Justfication à droite et centrage de textes Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Justfication à droite et centrage de textes Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Justfication à droite et centrage de textes Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Justfication à droite et centrage de textes Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Justfication à droite et centrage de textes Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Justfication à droite et centrage de textes Emptypar leclode Sam 27 Avr 2024 - 17:59

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 du moment : -39%
Pack Home Cinéma Magnat Monitor : Ampli DENON ...
Voir le deal
1190 €

 

 Justfication à droite et centrage de textes

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12295
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Justfication à droite et centrage de textes Empty
MessageSujet: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyMar 30 Oct 2012 - 23:01

Extraits de mon programme de gestion de ventes eBay, voici les procédures de cadrage de textes à droite et de centrage. Ces procédures fonctionnent pour n'importe quel objet Panoramic (EDIT, MEMO, cellule de GRID, etc).

On leur passe le texte à cadrer, le numéro d'objet pour lequel il faut faire le cardrage, et la largeur en pixels maximale. Le texte est cadré en ajoutant des espaces devant le texte d'origine, et ce texte cadré est retourné dans une variable globale sjust$.

Voici une démo incluant les deux procédures:
Code:
' demo_cadrage.bas

dim i%,s$,sjust$

grid 1 : grid_row 1,10 : grid_column 1,4
  width 1,400 : height 1,400
  grid_column_width 1,80
grid_write 1,1,2,"Gauche"
grid_write 1,1,3,"Centré"
grid_write 1,1,4,"Droite"
for i%=1 to 9
  grid_write 1,i%+1,1,str$(i%)
  s$ = s$ + str$(i%)
  grid_write 1,i%+1,2,s$
  center_justify(s$,1,80)
  grid_write 1,i%+1,3,sjust$
  right_justify(s$,1,80)
  grid_write 1,i%+1,4,sjust$
next i%
 
end




sub right_justify(m$,g%,w%)
  dim_local x%, sp%, t%
  sp% = text_width(" ",g%)
  t% = text_width(m$,g%)
  x% = int((w%-sp%-t%)/sp%)
  if x%>0
    sjust$ = string$(x%," ")+m$
  else
    sjust$ = m$
  end_if
end_sub

sub center_justify(m$,g%,w%)
  dim_local x%,sp%, t%
  sp% = text_width(" ",g%)
  t% = text_width(m$,g%)
' *** bug dans Panoramic ***  x% = int((w%-sp%-t%)/sp%/2)
  x% = int((w%-sp%-t%)/sp%*2)  : ' *** contourner le bug dans PAnoramic ***
  if x%>0
    sjust$ = string$(x%," ")+m$
  else
    sjust$ = m$
  end_if
end_sub

Et voici le résultat:
Justfication à droite et centrage de textes Aa113
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Justfication à droite et centrage de textes Empty
MessageSujet: re   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 3:19

Je me suis permis de reprendre ton code pour l'englober dans une seule procédure d' écriture.
Comme je suis un peu fé..... pale cela ne me fait plus qu'un appel réutilisable... Laughing
Code:
dim v$,i%

grid 1 : grid_row 1,10 : grid_column 1,4
  width 1,400 : height 1,400
  grid_column_width 1,80
grid_write 1,1,2,"Gauche"
grid_write 1,1,3,"Centré"
grid_write 1,1,4,"Droite"

for i%=1 to 9
  Write_Grid_Align(1,i%+1,1,str$(i%),"G",80)
  v$=v$+str$(i%)
  Write_Grid_Align(1,i%+1,2,v$,"G",80)
  Write_Grid_Align(1,i%+1,3,v$,"C",80)
  Write_Grid_Align(1,i%+1,4,v$,"D",80)
next i%

end
' ------------------------------------------------------------------------------
sub Write_Grid_Align(No%,R%,C%,T$,Align$,WC%)
  If Variable("sjust$")=0 then Dim sjust$
  Dim_Local sp%,x%,t%
  If Align$="G"
      Grid_Write No%,R%,C%,T$
  Else
      If Align$="C"
        sp% = text_width(" ",No%)
        t% = text_width(T$,No%)
        ' *** bug dans Panoramic ***  x% = int((w%-sp%-t%)/sp%/2)
        x% = int((WC%-sp%-t%)/sp%*2)  : ' *** contourner le bug dans PAnoramic ***
            if x%>0
              sjust$ = string$(x%," ")+T$
            else
              sjust$ = T$
            end_if
      Else
        If Align$="D"
              sp% = text_width(" ",No%)
              t% = text_width(T$,No%)
              x% = int((WC%-sp%-t%)/sp%)
              if x%>0
                sjust$ = string$(x%," ")+T$
              else
                sjust$ = T$
              end_if
        End_If
      End_If
      Grid_Write No%,R%,C%,sjust$
  End_If
End_Sub

Le résultat est le même Laughing
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 9:47

Très bien !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 10:00

Je me suis permis de modifier un peu la procédure
Code:
' ------------------------------------------------------------------------------
' -                                                                            -
' -          Alignement de cellules: programme créé par Klaus                  -
' -                                                                            -
' -          Modifié par ygeronimi et jicehel  le 01/11/2012                  -
' -                                                                            -
' ------------------------------------------------------------------------------
'
' Déclaration des variables
'
dim Chaine$    : ' Variable qui stockera la chaine de caractères à afficher
dim Compteur%  : ' Variable servant de compteur dans notre programme
'
' Création de la grille
'
grid 1          :' La grille sera l'objet n°1
grid_row 1,10 : grid_column 1,4 : ' Définition du nombre de lignes à 10 et 4 colonnes
width 1,400 : height 1,400      : ' Redéfinition de la taille de la grille en largeur et hauteur
grid_column_width 1,80          : ' Redéfinition de la largeur de la colonne 1
grid_write 1,1,2,"Gauche" :      ' Ecrit "Gauche" dans l'objet 1 (la grille), colonne 2, ligne 1
grid_write 1,1,3,"Centré" :      ' Ecrit "Centré" dans la grille, colonne 3, ligne 1
grid_write 1,1,4,"Droite" :      ' Ecrit "Droite" en c:4, l:1

'
' Boucle de remplissage de la grille
'
for Compteur%=1 to 9 : ' Faire 9 fois la boucle en utilisant la vraible Compteur% de 1 à 9
  Write_Grid_Align(1,Compteur%+1,1,str$(Compteur% ),"G",80) : ' Affiche le compteur dans la grille, dans la colonne 1
  Chaine$=Chaine$+str$(Compteur% ) : ' Fabrique la chaine qui servira pour le test
  Write_Grid_Align(1,Compteur%+1,2,Chaine$,"G",80) : ' Affiche la chaine alignée à gauche dans la colonne 2
  Write_Grid_Align(1,Compteur%+1,3,Chaine$,"C",80) : ' Affiche la chaine centrée dans la colonne 3
  Write_Grid_Align(1,Compteur%+1,4,Chaine$,"D",80) : ' Affiche la chaine alignée à droite dans la colonne 4
next Compteur%      : ' Fin de la boucle, recommencer jusqu'à ce que compteur% soit plus grand que 9

end : ' Fin du programme
'
' ------------------------------------------------------------------------------
' Procédure de gestion de l'alignement appelé par le programme principal
'  No%    est le numéro de l'objet dans lequel on veut écrire
'  R%      correspond à ROW, le n° de la ligne dans laquelle on veut écrire
'  C%      correspond à COLOUMN, le n° de la colonne dans laquelle on veut écrire
'  T$      est le texte que l'on veut y écrire
'  Align$  est le type d'alignement demandé
'                          "C" correspond à centré
'                          "D" correspond à un alignement à droite
'                          "G" est l'alignement par défaut (à gauche)
' ------------------------------------------------------------------------------
'
sub Write_Grid_Align(No%,R%,C%,T$,Align$,WC%)
  Dim_Local sp%,x%,t%,sjust$  : ' Définition des variables locales
  sp% = text_width(" ",No%)  : ' La variable sp% correspond à la taille d'un espace
  t% = text_width(T$,No%)    : ' La variable t% correspond à la taille du texte

  ' Teste si l'on a demandé un affichage centré
  If Align$="C"
    ' *** bug dans Panoramic ***  x% = int((w%-sp%-t%)/sp%/2)
    x% = int((WC%-sp%-t%)/sp%*2)  : ' Calcul du nombre d'espaces à ajouter devant la chaine
  Else
    ' Teste si l'on a demandé un affichage à droite
    If Align$="D" Then x% = int((WC%-sp%-t%)/sp%)  : ' Calcul du nombre d'espaces à ajouter devant la chaine
  End_If
  if x% > 0 then T$ = string$(x%," ")+T$ : ' On ajoute les espaces devant la chaine (0 si alignement à gauche)
  Grid_Write No%,R%,C%,T$ : ' On écrit la chaine dans la grille
End_Sub
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 10:15

On peut faire de jolies choses avec ça, n'est-ce pas ? Mais n'oubliez pas: ce que j'ai posté initialement, est utilisable pour tout type d'objet Panoramic: grid, bien sûr, mais aussi edit, memo, caption d'un bouton ou d'une form ou d'un container, enregistrement dans un fichier, impressions, ... bref, tout ce qui accepte une chaîne de caractères et qui peut se mesurer en pixels. Ce n'est plus le cas avec vos procédures qui visent spécifiquement une cellude d'un grid.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 10:20

Absolument Wink
Là, la procédure est spécifique, je vais modifier pour faire 2 procédures
Celle de la grille appellera la générale, tu as raison Wink
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 10:31

Voilà, ça donnerait ça:
Code:
' ------------------------------------------------------------------------------
' -                                                                            -
' -          Alignement de cellules: programme créé par Klaus                  -
' -                                                                            -
' -          Modifié par ygeronimi et jicehel  le 01/11/2012                  -
' -                                                                            -
' ------------------------------------------------------------------------------
'
' Déclaration des variables
'
dim Chaine$    : ' Variable qui stockera la chaine de caractères à afficher
dim Compteur%  : ' Variable servant de compteur dans notre programme
'
' Création de la grille
'
grid 1          :' La grille sera l'objet n°1
grid_row 1,10 : grid_column 1,4 : ' Définition du nombre de lignes à 10 et 4 colonnes
width 1,400 : height 1,400      : ' Redéfinition de la taille de la grille en largeur et hauteur
grid_column_width 1,80          : ' Redéfinition de la largeur de la colonne 1
grid_write 1,1,2,"Gauche" :      ' Ecrit "Gauche" dans l'objet 1 (la grille), colonne 2, ligne 1
grid_write 1,1,3,"Centré" :      ' Ecrit "Centré" dans la grille, colonne 3, ligne 1
grid_write 1,1,4,"Droite" :      ' Ecrit "Droite" en c:4, l:1

'
' Boucle de remplissage de la grille
'
for Compteur%=1 to 9 : ' Faire 9 fois la boucle en utilisant la vraible Compteur% de 1 à 9
  Write_Grid_Align(1,Compteur%+1,1,str$(Compteur% ),"G",80) : ' Affiche le compteur dans la grille, dans la colonne 1
  Chaine$=Chaine$+str$(Compteur% ) : ' Fabrique la chaine qui servira pour le test
  Write_Grid_Align(1,Compteur%+1,2,Chaine$,"G",80) : ' Affiche la chaine alignée à gauche dans la colonne 2
  Write_Grid_Align(1,Compteur%+1,3,Chaine$,"C",80) : ' Affiche la chaine centrée dans la colonne 3
  Write_Grid_Align(1,Compteur%+1,4,Chaine$,"D",80) : ' Affiche la chaine alignée à droite dans la colonne 4
next Compteur%      : ' Fin de la boucle, recommencer jusqu'à ce que compteur% soit plus grand que 9

end : ' Fin du programme
'
' ------------------------------------------------------------------------------
' Procédure de gestion de l'alignement d'un texte dans une grille
'  No%    est le numéro de l'objet dans lequel on veut écrire
'  R%      correspond à ROW, le n° de la ligne dans laquelle on veut écrire
'  C%      correspond à COLOUMN, le n° de la colonne dans laquelle on veut écrire
'  T$      est le texte que l'on veut y écrire
'  Align$  est le type d'alignement demandé
'                          "C" correspond à centré
'                          "D" correspond à un alignement à droite
'                          "G" est l'alignement par défaut (à gauche)
'  WC%    largeur disponible de l'objet
' ------------------------------------------------------------------------------
'
sub Write_Grid_Align(No%,R%,C%,T$,Align$,WC%)
  Align(No%,T$,Align$,WC%)
  T$ = Align_return$
  Grid_Write No%,R%,C%,T$ : ' On écrit la chaine dans la grille
End_Sub
'
' ------------------------------------------------------------------------------
' Procédure de gestion de l'alignement dans un objet quelconque
'  No%    est le numéro de l'objet dans lequel on veut écrire
'  T$      est le texte que l'on veut y écrire
'  Align$  est le type d'alignement demandé
'                          "C" correspond à centré
'                          "D" correspond à un alignement à droite
'                          "G" est l'alignement par défaut (à gauche)
'  WC%    largeur disponible de l'objet
' ------------------------------------------------------------------------------
'
Sub Align(No%,T$,Align$,WC%)
  Dim_Local sp%,x%,t%        : ' Définition des variables locales
  If Variable("Align_return$")=0 then Dim Align_return$ : ' On doit définir une variable globale pour retourner la chaine calculée
  sp% = text_width(" ",No%)  : ' La variable sp% correspond à la taille d'un espace
  t% = text_width(T$,No%)    : ' La variable t% correspond à la taille du texte

  ' Teste si l'on a demandé un affichage centré
  If Align$="C"
    ' *** bug dans Panoramic ***  x% = int((w%-sp%-t%)/sp%/2)
    x% = int((WC%-sp%-t%)/sp%*2)  : ' Calcul du nombre d'espaces à ajouter devant la chaine
  Else
    ' Teste si l'on a demandé un affichage à droite
    If Align$="D" Then x% = int((WC%-sp%-t%)/sp%)  : ' Calcul du nombre d'espaces à ajouter devant la chaine
  End_If
  if x% > 0 then T$ = string$(x%," ")+T$ : ' On ajoute les espaces devant la chaine (0 si alignement à gauche)
  Align_return$ = T$  : ' On place la chaine modifiée dans la chaine de retour
End_Sub
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 10:48

C'est pas mal, comme ça. J'ai intégré la procédure Align dans KGF_SUB.bas. Seule différence: pour respecter les conventions d'appel en cours avec KGF_SUB, j'ai nommé la variable de résultat Align$ (même nom que la procédure, avec un $ terminal), et donc le paramètre formel align$ est devenu alignement$. C'est devenu ainsi la première procédure "utilitaire" non liée à KGF.dll que j'ai intégré dans ce module.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 10:56

Cool Wink
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 11:11

Et j'ai adapté demo_KGF_SUB.bas pour une démonstration (plus réduite) de cette fonction, dans un memo.

Juste une remarque: on ne peut pas utiliser le numéro d'un memo ou d'un bouton comme premier paramètre de la fonction Align. En effet, la fonction TEXT_WIDTH ne s'applique malheureusement pas à tous les objets Panoramic. Jack pourrait éventuellement élargir de domaine d'application de cette fonction.

Mais on peut contourner le problème en utilisant un ALPHA quelconque (avec police, style et taille appropriés) pour l'appel de la fonction Align, puis on utilise la variable Align$ pour l'objet véritablement ciblé. C'est ce que j'ai fait dans demo_KGF_SUB.bas, et ça marche parfaitement.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 11:23

Il faut juste bien entendu que les paramétrage de polices soient les même sur l'alpha et l'objet ...
C'est évident, mais bon, mieux vaut quand même l'écrire quelque part Wink
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Justfication à droite et centrage de textes Empty
MessageSujet: re   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 13:40

On peut n'en faire qu'une en se servant de Object_type(N) en condition
et changer la façon d'écrire selon l'objet. Laughing

Code:
if object_type(No%)=22
    Grid_write........
else
  if object_type(No%)=3
      Text No%,.......
  else
      If object_Type(No%)=4 or If object_Type(No%)=5 or If object_Type(No%)=8
          Item_add No%,......
      Else
          Caption No%,..........
      End_if
  End_if
End_if
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 13:58

Oui, mais est-ce vraiment utile ?
N'est-ce pas plus simple d'envoyer le texte à justifier et de faire ce que l'on veut de la chaine préparée ?
Je ne suis pas sûr que l'on y gagne beaucoup en lisibilité ou en simplicité.
Par exemple les paramètres lignes et colonnes ne servent que pour la grille.
En règle général avec la procédure qui t'envoie le texte formaté, tu fais juste Align(No%,T$,Align$,WC%)
et tu envois directement Align$ dans le traitement que tu veux et ça fait 2 lignes dans ton code.
Que gagnerais-tu à traiter l'affichage dans la procédure ?
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 14:07

Pour notre cas, en ne gardant que la procédure pour avoir le text aligné, ça donne ça:
Code:
' ------------------------------------------------------------------------------
' -                                                                            -
' -          Alignement de cellules: programme créé par Klaus                  -
' -                                                                            -
' -          Modifié par ygeronimi et jicehel  le 01/11/2012                  -
' -                                                                            -
' ------------------------------------------------------------------------------
'
' Déclaration des variables
'
dim Chaine$    : ' Variable qui stockera la chaine de caractères à afficher
dim Compteur%  : ' Variable servant de compteur dans notre programme
'
' Création de la grille
'
grid 1          :' La grille sera l'objet n°1
grid_row 1,10 : grid_column 1,4 : ' Définition du nombre de lignes à 10 et 4 colonnes
width 1,400 : height 1,400      : ' Redéfinition de la taille de la grille en largeur et hauteur
grid_column_width 1,80          : ' Redéfinition de la largeur de la colonne 1
grid_write 1,1,2,"Gauche" :      ' Ecrit "Gauche" dans l'objet 1 (la grille), colonne 2, ligne 1
grid_write 1,1,3,"Centré" :      ' Ecrit "Centré" dans la grille, colonne 3, ligne 1
grid_write 1,1,4,"Droite" :      ' Ecrit "Droite" en c:4, l:1

'
' Boucle de remplissage de la grille
'
for Compteur%=1 to 9 : ' Faire 9 fois la boucle en utilisant la vraible Compteur% de 1 à 9
  Align(1,str$(Compteur% ),"G",80) : Grid_Write 1,Compteur%+1,1,Align_return$ : ' Affiche le compteur dans la grille, dans la colonne 1
  Chaine$=Chaine$+str$(Compteur% ) : ' Fabrique la chaine qui servira pour le test
  Align(1,Chaine$,"G",80)          : Grid_Write 1,Compteur%+1,2,Align_return$ : ' Affiche la chaine alignée à gauche dans la colonne 2
  Align(1,Chaine$,"C",80)          : Grid_Write 1,Compteur%+1,3,Align_return$ : ' Affiche la chaine centrée dans la colonne 3
  Align(1,Chaine$,"D",80)          : Grid_Write 1,Compteur%+1,4,Align_return$ : ' Affiche la chaine alignée à droite dans la colonne 4
next Compteur%      : ' Fin de la boucle, recommencer jusqu'à ce que compteur% soit plus grand que 9

end : ' Fin du programme

'
' ------------------------------------------------------------------------------
' Procédure de gestion de l'alignement dans un objet quelconque
'  No%    est le numéro de l'objet dans lequel on veut écrire
'  T$      est le texte que l'on veut y écrire
'  Align$  est le type d'alignement demandé
'                          "C" correspond à centré
'                          "D" correspond à un alignement à droite
'                          "G" est l'alignement par défaut (à gauche)
'  WC%    largeur disponible de l'objet
' ------------------------------------------------------------------------------
'
Sub Align(No%,T$,Align$,WC%)
  Dim_Local sp%,x%,t%        : ' Définition des variables locales
  If Variable("Align_return$")=0 then Dim Align_return$ : ' On doit définir une variable globale pour retourner la chaine calculée
  sp% = text_width(" ",No%)  : ' La variable sp% correspond à la taille d'un espace
  t% = text_width(T$,No%)    : ' La variable t% correspond à la taille du texte

  ' Teste si l'on a demandé un affichage centré
  If Align$="C"
    ' *** bug dans Panoramic ***  x% = int((w%-sp%-t%)/sp%/2)
    x% = int((WC%-sp%-t%)/sp%*2)  : ' Calcul du nombre d'espaces à ajouter devant la chaine
  Else
    ' Teste si l'on a demandé un affichage à droite
    If Align$="D" Then x% = int((WC%-sp%-t%)/sp%)  : ' Calcul du nombre d'espaces à ajouter devant la chaine
  End_If
  if x% > 0 then T$ = string$(x%," ")+T$ : ' On ajoute les espaces devant la chaine (0 si alignement à gauche)
  Align_return$ = T$  : ' On place la chaine modifiée dans la chaine de retour
End_Sub

Là, le code de la fonction est court et lisible. Les paramètres d'appel sont courts. Pas évident que prévoir tous les cas d'objets apporterait un plus, mais c'est juste mon opinion
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 14:28

A mon avis, ça ne sert à rien de prévoir tous les types d'objets. Pour ma part, je préfère une fonction simple qui retourne une chaine de caractères qui, une fois envoyée à sa destination, apparaîtra cadrée selon ce que je veux. Cela pourrait être une zone rectangulaire que je choisis dans un picture pour y apposer une légende, ou une édition sur papier via mes fonctions de gestion d'imprimante, etc. La procedure Align() telle que je l'ai mise dans KGF_SUB.bas, est beaucoup plus générale et peut servir à des besoins très divers. Y compris le cadrade de textes dans un grid, mais c'est juste un cas particulier.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8611
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Justfication à droite et centrage de textes Empty
MessageSujet: re   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 23:03

Le premier regroupement concerné un grid car on a souvent
une colonne entière avec le même alignement .

La deuxième intervention était pour rappeler l'existence de la commande
Object_type(N) qui pouvait en ce cas être utilisé.

Sad
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 23:48

Tu as raison de donner ton avis et d'organiser tes programmes comme tu en as envie Wink
Après on partage ou pas ta façon de voir, mais le fait que tu donnes ton avis est bien car ça permet d'avoir une vision des choses et de réfléchir sous cet angle, même quand on adhère pas Very Happy
A quoi servirait un avis si tout le monde était d'accord ?
Personnellement quand on travaille sur les grille avec des alignement, je ferais la procédure
Grid_Align_Column(No%,LD%,LF%,C%,Align$,WC%)
No%=> Numero de la grille, LD%: ligne de début, LF%: ligne de fin, C%: la colonne concernée, Align$: Type d'alignement et WC%, la taille de la colonne
T$ disparait puisque fait à partir du contenu de la grille.
Mais bon, ce type de procédure n'est interessant que dans certains cas puisque la justification n'est pas gardée. Il faut donc utiliser une fonction Align à chaque écriture pour que l'affichage reste correct.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 23:50

J'ai ajouté une fonction de cadrage dérivée dans KGF_SUB.bas:

AlignEX(T$,Alignement$,WC%,police$,taille%,gras%)

Cette fonction n'a plus besoin d'un numéro d'objet pour ses calculs. Elle crée automatiquement un ALPHA et lui applique la police, la taille et éventuellement l'attribut "gras". Ensuite, le cadrage sera fait par rapport à cet objet interne, et le résultat sera retournée dans la variable AlignEX$. Finalement, l'objet ALPHA interne est supprimé.

KGF_SUB.bas et demo_KGF_SUB.bas sont mis à jour. Et comme il s'agit de simples utilitaires, KGF.dll n'est pas en cause et n'a donc pas changé. Il n'est pas non plus nécessaire de charger KGF.dll ou d'utiliser KGF_initialize() pour se servir des procédures Align et AlignEX.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 23:54

@Jicehel:
Regarde mon utilitaire ebay_ventes.bas. Je fais cela: je cadre systématiquement tous les montants à droite, et cela donne une belle présentation dans un GRID. Les textes (libellés etc) restent cadrés à gauche.

Dans la rubrique des souhaits d'amélioration, j'avais suggéré des fonctions de cadrage, en particulier pour les grid. On verra bien. En attendant, les eux fonctions Align et AlignEX permettent de faire beaucoup de choses !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


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

Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes EmptyJeu 1 Nov 2012 - 23:57

Oui, pour moi, cela suffit, je pense. Mais en effet, si les cellule des grille pouvaient garder leur propre propriétés d'alignement, ce serait plus simple encore.
Revenir en haut Aller en bas
Contenu sponsorisé





Justfication à droite et centrage de textes Empty
MessageSujet: Re: Justfication à droite et centrage de textes   Justfication à droite et centrage de textes Empty

Revenir en haut Aller en bas
 
Justfication à droite et centrage de textes
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Editeur de textes
» Equation d'une droite
» Intersection d’un cercle et d’une droite
» Menu Contextuel - Click de droite
»  Faire passer toutes les balles rouges dans la partie droite

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: