Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Un catalogue sur un seul formulaire avec des "Imprimer ligne"

Date de publication : Novembre 2005

Par Bertrand Soubeyrand
 

Les commandes 4D afférentes à l'impression ont beaucoup évoluées depuis la version 4D 6.8.1. Cette Note technique met en exergue des changements étalés tout au long de ces mises à jour, jusqu'à la version actuelle, 4D 2004.3.

Introduction
Les modifications apportées par 4D 2004
Une base exemple
Codes pas à pas
Codes complets
Trois syntaxes pour "Imprimer ligne"
Text2Array
Conclusion
Base exemple


Introduction

Cette note techniquue vient en complément de la note réf. 4D-200303-08-FR : "Remplacez vos IMPRIMER SELECTION par un module générique".

Les commandes 4D afférentes à l'impression ont beaucoup évoluées depuis la version 4D 6.8.1. Cette Note technique met en exergue des changements étalés tout au long de ces mises à jour, jusqu'à la version actuelle, 4D 2004.3.

Le tableau qui suit représente le thème « Impression » de 4D 2004. Il vous dresse un panorama de l'évolution de l'impression. Le premier numéro de version qui suit le nom de la commande correspond à sa version de création et les suivants aux versions de révisions.

(en rouge les commandes modifiées en 4D 2004)

Nom de la commande Version de création Version de révision Version de révision
Lire taquet impression 6.8.1 2003.0  
FIXER TAQUET IMPRESSION 6.8.1 2003.0  
Lire hauteur imprimee 6.8.1    
LIRE MARGE IMPRESSION 6.8.1    
FIXER MARGE IMPRESSION 6.8.1    
LIRE ZONE IMPRESSION 6.8.1    
Imprimer ligne 5.0 2003.0 2004.0
SAUT DE PAGE 5.0 2003.0  
LISTE IMPRIMANTES 2003.0 2004.2  
FIXER IMPRIMANTE COURANTE 2003.0    
Lire imprimante courante 2003.0    
VALEURS OPTION IMPRESSION 2003.0    
FIXER OPTION IMPRESSION 2003.0 2004.0 2004.3
LIRE OPTION IMPRESSION 2003.0 2004.0 2004.3
IMPRIMER ETIQUETTES 5.0 2004.0  
IMPRIMER SELECTION 5.0 2004.0  
IMPRIMER ENREGISTREMENT 5.0 2004.0  
FIXER IMPRIMANTE COURANTE 5.0    
IMPRESSION ECRAN 5.0    
Niveau 5.0    
NIVEAUX DE RUPTURES 5.0    
Page impression 5.0    
PARAMETRES IMPRESSION 5.0    
Sous total 5.0    
UTILISER PARAMETRES IMPRESSION 5.0    


Les modifications apportées par 4D 2004


Imprimer ligne

Cette commande peut désormais être exécutée sur 4D Server dans le cadre d'une procédure stockée.

Dans ce contexte :

   • Il faut veillez à ce qu'aucune boîte de dialogue n'apparaisse sur le poste serveur (sauf besoin spécifique) Pour cela, il est nécessaire d'appeler la commande avec le paramètre * ou >.

   • En cas de problème sur l'imprimante (plus de papier, imprimante déconnectée, etc.), aucun message d'erreur n'est généré.


LISTE DES IMPRIMANTES

Sous MacOS, le deuxième paramètre de cette commande retourne désormais pour chaque imprimante son nom personnalisé, modifiable par l'utilisateur. Ce nom peut être utilisé par exemple dans des boîtes de dialogue.


FIXER OPTION IMPRESSION, LIRE OPTION IMPRESSION

2004.0. Introduction d'un nouveau paramètre : Option mode impression Mac

• Option mode impression Mac (13) : passez 0 pour fixer l'impression en mode PDF (valeur par défaut) et 1 pour "forcer" l'impression en mode Postscript dans valeur1. Cette option modifie également le mode d'impression des plug-ins 4D Write, 4D View et 4D Draw. En revanche, elle n'a pas d'effet sous Windows.

info Note : Sous MacOS X, les impressions sont effectuées par défaut en mode PDF. Or, le pilote d'impression PDF ne prend pas en charge les images PICT encapsulant des informations Postscript -ces images sont générées notamment par des logiciels de dessin vectoriel. Pour résoudre ce problème, cette option permet de modifier le mode d'impression sous MacOS X pour la session courante. Attention, l'impression en mode Postscript peut entraîner des effets de bords indésirables.
Une fois fixée à l'aide de cette commande, une option d'impression sera conservée durant toute la session pour l'application 4D entière. Elle sera utilisée par les commandes IMPRIMER SELECTION, IMPRIMER ETIQUETTES, IMPRIMER ENREGISTREMENT, Imprimer ligne, QR ETAT et par toutes les impressions de 4ème Dimension, y compris en mode Structure.

2004.3. Introduction d'un nouveau paramètre : Option masquer progression impr

• Option masquer progression impr (14). Cette nouvelle option permet de masquer toutes les fenêtres système de progression d'impression pour le process courant. Passez 1 dans valeur1 pour masquer les fenêtres de progression et 0 pour rétablir leur affichage (fonctionnement par défaut). Cette option est particulièrement utile dans le cadre des impressions en PDF sous Mac OS X.

info Note : Il existe déjà une option d'affichage Progression de l'impression accessible via la boîte de dialogue des Préférences (page Application/Options). Toutefois, elle est globale à l'application et ne masque pas toutes les fenêtres sous Mac OS X.

IMPRIMER ETIQUETTES

4D Server : cette commande peut être exécutée sur 4D Server dans le cadre d'une procédure stockée.

Dans ce contexte :

   • Même mise en garde concernant les dialogues et l'absence de message d'erreur que pour les commandes précédentes...

   • La syntaxe faisant apparaître l'éditeur d'étiquettes ne fonctionne pas avec 4D Server, dans ce cas, la variable système OK prend la valeur 0.


IMPRIMER SELECTION

4D Server : cette commande peut être exécutée sur 4D Server dans le cadre d'une procédure stockée. Même mise en garde concernant les dialogues et l'absence de message d'erreur...


IMPRIMER ENREGISTREMENT

4D Server : cette commande peut être exécutée sur 4D Server dans le cadre d'une procédure stockée. Attention également à ne pas afficher de dialogues et à l'absence de message d'erreur...


Une base exemple

La base qui accompagne cette note illustre la façon d'imprimer un catalogue de produits à partir d'un formulaire unique.


Notons que l'entête de ce catalogue contient deux variables (l'heure et la date d'impression) et le corps contient un champ qui détaille le produit.

La hauteur de ce champ s'adapte au texte contenu aussi nous devons prendre soin :

   · d'ajuster l'objet sur le contenu texte
   · déplacer les autres éléments situés sous l'objet
   · déplacer les taquets d'impression pour le corps mais aussi celui de rupture et de pied
   · veiller à la place restante avant de lancer l'Imprimer ligne
   · ne pas recalculer l'heure et la date à chaque produit !


Codes pas à pas


Méthode formulaire : le principe est de ne pas calculer quand ce n'est pas utile.

La méthode print_catalogue lance l'impression et distribue les ordres d'Imprimer ligne. Imprimons simplement l'entête du catalogue :
code 4D
$L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Entête formulaire )

La Méthode formulaire est exécutée et les variables Date et Heure sont renseignées :
code 4D
Au cas ou
   : (Evenement formulaire=Sur impression corps )
      D_Date:=Date du jour
      H_Heure:=Heure courante
Fin de cas

Maintenant n'imprimons que les produits :
code 4D
TOUT SELECTIONNER([TABLE_PRINT])

Tant que (Non(Fin de selection([TABLE_PRINT])))
   $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Corps formulaire )
   ENREGISTREMENT SUIVANT([TABLE_PRINT])
Fin tant que

La Méthode formulaire est exécutée et nous redimensionnons la zone de texte de la description.
code 4D
Au cas ou

   : (Evenement formulaire=Sur impression corps )
      LIRE RECT OBJET([TABLE_PRINT]Detail_T;$L_Gauche;$L_Haut;$L_Droite;$L_Bas)
      $L_Max:=$L_Droite-$L_Gauche
      $L_Hauteur:=$L_Bas-$L_Haut
      TAILLE OBJET OPTIMALE([TABLE_PRINT]Detail_T;$L_LargeurOpti;$L_HauteurOpti;$L_Max)
      $L_Augmentation:=$L_HauteurOpti-$L_Hauteur
         ` D'abord déplacer le taquet
         ` Notez * dans FIXER TAQUET IMPRESSION qui permet de déplacer les taquets suivants
      $L_C:=Lire taquet impression(Corps formulaire )
      FIXER TAQUET IMPRESSION(Corps formulaire ;$L_C+$L_Augmentation;*)
         ` Ensuite déplacer les objets
      DEPLACER OBJET([TABLE_PRINT]Detail_T;0;0;0;$L_Augmentation) ` par le bas
      DEPLACER OBJET(*;"ligne1";0;$L_Augmentation;0;0) ` par le haut
      DEPLACER OBJET(*;"ligneVd";0;0;0;$L_Augmentation)
      DEPLACER OBJET(*;"ligneVg";0;0;0;$L_Augmentation)

Fin de cas

À l'issue de ces deux impressions nous constatons qu'il y a comme deux méthodes formulaire distinctes à exécuter dans un formulaire unique "catalogue_demo". Nous avons convenu au démarrage que, lors du calcul de l'heure et la date, on ne calcule pas la hauteur des produits et réciproquement.

Pour faire ce distinguo nous renseignons une variable process S020_ZoneTaquet qui indique à la méthode formulaire les traitements à réaliser.
code 4D
Au cas ou

   : (S020_ZoneTaquet="corps")

   : (S020_ZoneTaquet="tete")

   : (S020_ZoneTaquet="pied")

Fin de cas

Retouchons la méthode print_catalogue :
code 4D
S020_ZoneTaquet:="tete"
$L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Entête formulaire )
Tant que (Non(Fin de selection([TABLE_PRINT])))
   S020_ZoneTaquet:="corps"
   $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Corps formulaire )
   ENREGISTREMENT SUIVANT([TABLE_PRINT])
Fin tant que

La méthode formulaire devient :
code 4D
Au cas ou
   : (Evenement formulaire=Sur impression corps )

      Au cas ou

         : (S020_ZoneTaquet="corps")
            LIRE RECT OBJET([TABLE_PRINT]Detail_T;$L_Gauche;$L_Haut;$L_Droite;$L_Bas)
            $L_Max:=$L_Droite-$L_Gauche
            $L_Hauteur:=$L_Bas-$L_Haut
            TAILLE OBJET OPTIMALE([TABLE_PRINT]Detail_T;$L_LargeurOpti;$L_HauteurOpti;$L_Max)
            $L_Augmentation:=$L_HauteurOpti-$L_Hauteur
               ` D'abord déplacer le taquet
               ` Notez * dans FIXER TAQUET IMPRESSION qui permet de déplacer les taquets suivants
            $L_C:=Lire taquet impression(Corps formulaire )
            FIXER TAQUET IMPRESSION(Corps formulaire ;$L_C+$L_Augmentation;*)
               ` Ensuite déplacer les objets
            DEPLACER OBJET([TABLE_PRINT]Detail_T;0;0;0;$L_Augmentation) ` par le bas
            DEPLACER OBJET(*;"ligne1";0;$L_Augmentation;0;0) ` par le haut
            DEPLACER OBJET(*;"ligneVd";0;0;0;$L_Augmentation)
            DEPLACER OBJET(*;"ligneVg";0;0;0;$L_Augmentation)

         : (S020_ZoneTaquet="tete")
            D_Date:=Date du jour
            H_Heure:=Heure courante

      Fin de cas

Nous touchons au but mais n'oublions pas qu'il faut calculer la place nécessaire pour imprimer notre produit : si celle-ci est insuffisante nous redémarrons sur une nouvelle page avec les têtes des colonnes. Pour réaliser cette tâche nous allons utiliser une autre syntaxe de la fonction Imprimer ligne. Au lieu de désigner la portion de formulaire par son nom…
code 4D
$L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Corps formulaire )

… nous indiquerons quelles coordonnées numériques nous voulons imprimer.
code 4D
$L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";1;1 )

Comme nous choisissons de la position 1 pixel à 1 pixel la zone de formulaire imprimée sera de 0 pixel… mais la méthode formulaire sera executée. Nous en profitons pour créer une nouvelle valeur pour le tag S020_ZoneTaquet.
code 4D
S020_ZoneTaquet:="calcul"
$L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";1;1 )

La partie du code de la Méthode formulaire qui change devient :
code 4D
Au cas ou
   : (Evenement formulaire=Sur impression corps )

      Au cas ou

         : (S020_ZoneTaquet="calcul")
            ` Le calcul va determiner la hauteur totale à imprimer
            $L_E1:=Lire taquet impression(Entête formulaire1 )
            $L_C:=Lire taquet impression(Corps formulaire )
            LIRE RECT OBJET([TABLE_PRINT]Detail_T;$L_Gauche;$L_Haut;$L_Droite;$L_Bas)
            $L_Max:=$L_Droite-$L_Gauche
            $L_Hauteur:=$L_Bas-$L_Haut
            TAILLE OBJET OPTIMALE([TABLE_PRINT]Detail_T;$L_LargeurOpti;$L_HauteurOpti;$L_Max)
            $L_Augmentation:=$L_HauteurOpti-$L_Hauteur
            L_HauteurNominale:=($L_C+$L_Augmentation)-$L_E1

         : (S020_ZoneTaquet="corps")

         : (S020_ZoneTaquet="tete")

      Fin de cas

Fin de cas

À l'issue de ce test nous avons renseigné la variable process L_HauteurNominale qui contient la hauteur en pixel de la zone à imprimer. Cette variable est exploitée dans la méthode print_catalogue pour, si besoin, générer une nouvelle page.
code 4D
LIRE ZONE IMPRESSION($L_HauteurImpression;$L_LargeurImpression)

Tant que (Non(Fin de selection([TABLE_PRINT])))
   ` Cette section"calcul" va nous permettre de savoir si la ligne de catalogue peut être imprimée
   S020_ZoneTaquet:="calcul"
   $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";1;1)
   $L_HauteurDispo:=$L_HauteurImpression-Lire hauteur imprimee

   Si ($L_HauteurDispo<L_HauteurNominale)
      SAUT DE PAGE(*)
      $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Entête formulaire1 )
   Fin de si

   S020_ZoneTaquet:="corps"
   $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Corps formulaire )
   ENREGISTREMENT SUIVANT([TABLE_PRINT])

Fin tant que

Codes complets


Pour conclure, voici le code complet de la méthode print_catalogue et de la méthode formulaire, rationalisé, afin de limiter les répétitions inutiles d'instructions.


• Méthode print_catalogue
En client/serveur elle s'exécutera sur le serveur (Nouveauté 2004) : dans ce cas gare aux alertes intempestives.
code 4D
Si (Nombre de parametres=0)
   $L_Process:=Executer sur serveur(Nom methode courante;1024*100;"test";"Dummy";*)

Sinon
   ` En client serveur c'est le serveur qui gère l'impression et non plus le client
   ` Attention aux alertes inattendues !
   FIXER OPTION IMPRESSION(Option orientation ;1) ` verticale
   FIXER OPTION IMPRESSION(Option échelle ;100) `a 100%
   FIXER OPTION IMPRESSION(Option nombre copies ;1) ` 1 Copie
   FIXER OPTION IMPRESSION(Option destination ;1) ` 1 Imprimante
   FIXER OPTION IMPRESSION(Option nom document à imprimer ;"test impression")
   FIXER OPTION IMPRESSION(Option papier ;"A4")
   FIXER MARGE IMPRESSION(-1;-1;-1;-1)
   LIRE ZONE IMPRESSION($L_HauteurImpression;$L_LargeurImpression)
   IMPRESSION ECRAN(Faux)
   ` Impression de l'entête, pas de difficulté
   ` On considère qu'il y a de la place pour imprimer cette zone
   S020_ZoneTaquet:="tete"
   $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Entête formulaire )
   $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Entête formulaire1 )
   $L_HauteurDispo:=$L_HauteurImpression-Lire hauteur imprimee
   TOUT SELECTIONNER([TABLE_PRINT])
   REDUIRE SELECTION([TABLE_PRINT];10)
   DEBUT SELECTION([TABLE_PRINT])
   
   Tant que (Non(Fin de selection([TABLE_PRINT])))
      `
      ` Cette section "calcul" va nous permettre de savoir si la ligne de catalogue peut être imprimée
      S020_ZoneTaquet:="calcul"
      $L_HauteurDispo:=$L_HauteurImpression-Lire hauteur imprimee
      $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";1;1)
      ` L_HauteurNominale est renseignée dans la méthode formulaire du formulaire d'impression
      Si ($L_HauteurDispo<L_HauteurNominale)
         SAUT DE PAGE(>)
         $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Entête formulaire1 )
      Fin de si
      S020_ZoneTaquet:="corps"
      $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Corps formulaire )
      ENREGISTREMENT SUIVANT([TABLE_PRINT])
   Fin tant que

   S020_ZoneTaquet:="pied"
   $L_Size:=Imprimer ligne([TABLE_PRINT];"catalogue_demo";Pied de page formulaire )
   SAUT DE PAGE

Fin de si

• La Méthode Formulaire
code 4D
Au cas ou
: (Evenement formulaire=Sur impression corps )
Si (S020_ZoneTaquet="calcul") | (S020_ZoneTaquet="corps")
LIRE RECT OBJET([TABLE_PRINT]Detail_T;$L_Gauche;$L_Haut;$L_Droite;$L_Bas)
$L_Max:=$L_Droite-$L_Gauche
$L_Hauteur:=$L_Bas-$L_Haut
TAILLE OBJET OPTIMALE([TABLE_PRINT]Detail_T;$L_LargeurOpti;$L_HauteurOpti;$L_Max)
$L_Augmentation:=$L_HauteurOpti-$L_Hauteur
$L_C:=Lire taquet impression(Corps formulaire )
Fin de si
Au cas ou
: (S020_ZoneTaquet="calcul")
` Le calcul va determiner la hauteur totale à imprimer
$L_E1:=Lire taquet impression(Entête formulaire1 )
L_HauteurNominale:=($L_C+$L_Augmentation)-$L_E1
: (S020_ZoneTaquet="corps")
` D'abord déplacer le taquet
FIXER TAQUET IMPRESSION(Corps formulaire ;$L_C+$L_Augmentation;*)
` Ensuite les objets
DEPLACER OBJET([TABLE_PRINT]Detail_T;0;0;0;$L_Augmentation) ` par le bas
DEPLACER OBJET(*;"ligne1";0;$L_Augmentation;0;0)
DEPLACER OBJET(*;"ligneVd";0;0;0;$L_Augmentation)
DEPLACER OBJET(*;"ligneVg";0;0;0;$L_Augmentation)
: (S020_ZoneTaquet="tete")
D_Date:=Date du jour
H_Heure:=Heure courante
Fin de cas
Fin de cas

Trois syntaxes pour "Imprimer ligne"


Pour terminer ce tour d'horizon, voici les trois syntaxes possibles de l'Imprimer ligne :

• Méthode : imprimer_ligne_syntaxe1
Syntaxe historique : on imprime la zone de Corps.
code 4D
` ----------------------------------------------------
` Nom utilisateur (OS) : Bertrand
` Date et heure : 03/01/06, 20:19:35
` ----------------------------------------------------
` Méthode : imprimer_ligne_syntaxe1
` Description
` C'est la syntaxe historique : la zone de corps est imprimée
`
` Paramètres
` ----------------------------------------------------
C_ENTIER($zone)
$zone:=Imprimer ligne([TABLE_PRINT];"demo_zone")
SAUT DE PAGE ` Déclenche l'impression

• Méthode : imprimer_ligne_syntaxe2
Imprimer ligne reçoit la précision sur la zone formulaire à imprimer. Ces zones sont intimement liées au formulaire.
code 4D
` ----------------------------------------------------
` Nom utilisateur (OS) : Bertrand
` Date et heure : 03/01/06, 20:18:34
` ----------------------------------------------------
` Méthode : imprimer_ligne_syntaxe2
` Description
` Imprimer ligne reçoit la précision sur la zone formulaire
`à imprimer. Ces zones sont intimement liées au formulaire
`
` Paramètres
` ----------------------------------------------------
C_ENTIER ($zone1;$zone2;$zone3;$zone4)
$zone1:=Imprimer ligne([TABLE_PRINT];"demo_zone";Entête formulaire )
$zone2:=Imprimer ligne([TABLE_PRINT];"demo_zone";Corps formulaire )
$zone3:=Imprimer ligne([TABLE_PRINT];"demo_zone";Rupture formulaire0 )
$zone4:=Imprimer ligne([TABLE_PRINT];"demo_zone";Pied de page formulaire )
SAUT DE PAGE ` Déclenche l'impression

• Méthode : imprimer_ligne_syntaxe3
Vous passez une zone de début et une zone de fin.
code 4D
` ----------------------------------------------------
` Nom utilisateur (OS) : Bertrand
` Date et heure : 03/01/06, 20:21:45
` ----------------------------------------------------
` Méthode : imprimer_ligne_syntaxe3
` Description
` Vous passez une zone de début et une zone de fin
` les valeurs sont en pixels
`
` Paramètres
` ----------------------------------------------------
C_ENTIER($zone)
$zone:=Imprimer ligne([TABLE_PRINT];"demo_zone";42;155)
` avec ces valeurs nous rognerons dans le libellé "entête zone" et "rupture zone"
SAUT DE PAGE ` Déclenche l'impression

Text2Array


La prochaine évolution majeure serait une fonction qui permettrait de découper un texte par lignes à placer dans un tableau de type texte et ainsi rendre imprimables de longues zones de texte courant sur plusieurs pages.

En attendant rappelons l'existence du plugin Text2Array développé par Dave BATTON :

http://e-node.fr/redir/FR/produit_id_90.html


Conclusion

Les méthodes utilisées pour l'impression évoluent comme le montre notre tableau d'entrée et donnent aux développeurs un nombre infini de possibilités.


Base exemple

Télécharger la base exemple.

__________________________________________________
Copyright © 1985-2009 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.
__________________________________________________
 



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Contacter le responsable de la rubrique 4D