PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Créer un état imbriqué
  • Principe
  • Exemple 1 : Etats imbriqués simples
  • Exemple à réaliser
  • Manipulations à effectuer
  • Exemple 2 : Etats imbriqués avec des orientations différentes (Paysage/Portrait)
  • Exemple à réaliser
  • Manipulations à effectuer
  • Particularités des états secondaires
  • Blocs de l'état secondaire
  • Orientation de l'état secondaire
  • Saut de page de l'état secondaire
  • État secondaire basé sur une requête paramétrée
  • État secondaire basé sur une requête utilisant une connexion spécifique
  • État secondaire imprimé depuis un bloc de bas de page
  • Affichage du nombre de pages total de l'état secondaire
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Créer un état imbriqué

Principe

La création d'un état principal composé de plusieurs états secondaires est réalisée en plusieurs étapes :
  1. Création d'un état principal.
  2. Création du ou des états secondaires. Ces états peuvent avoir une orientation différente de l'état principal.
  3. Impression des états secondaires dans l'état principal grâce à la fonction iImprimeEtat. Cette fonction doit être utilisée :
    • soit dans le traitement "Avant impression" d'un bloc : l'état secondaire sera imprimé avant ce bloc.
    • soit dans le traitement "Après impression" d'un bloc : l'état secondaire sera imprimé après ce bloc.
      Attention : Si les états imbriqués ont des orientations différentes, il est nécessaire d'appeler la fonction iParamètre afin de changer l'orientation de l'impression en conséquence.
  4. Configuration de l'impression des hauts et bas de pages de l'état imbriqué (fonction iHautBasPageImbriqué). Cette fonction peut être utilisée :
    • soit dans le code d'ouverture de l'état principal : elle sera prise en compte pour tous les états imbriqués qui seront imprimés depuis l'état principal.
    • soit directement avant l'impression de l'état imbriqué : elle sera prise en compte uniquement pour l'état imbriqué suivant.
  5. Impression de l'état principal. Pour plus de détails, consultez Imprimer un état principal composé de plusieurs états secondaires.
Versions 17 et supérieures
Remarque : Pour effectuer des impressions utilisant des états avec des orientations différentes (portrait/paysage), il est conseillé d'utiliser l'enchaînement d'états. Cette méthode est très simple à mettre en oeuvre. Pour plus de détails, consultez Enchaîner des états.
Nouveauté 17
Remarque : Pour effectuer des impressions utilisant des états avec des orientations différentes (portrait/paysage), il est conseillé d'utiliser l'enchaînement d'états. Cette méthode est très simple à mettre en oeuvre. Pour plus de détails, consultez Enchaîner des états.
Remarque : Pour effectuer des impressions utilisant des états avec des orientations différentes (portrait/paysage), il est conseillé d'utiliser l'enchaînement d'états. Cette méthode est très simple à mettre en oeuvre. Pour plus de détails, consultez Enchaîner des états.
Exemple 1 : Etats imbriqués simples

Exemple à réaliser

L'état "ETAT_Commande" est un état basé sur le fichier de données "Commande". Cet état permet d'imprimer les caractéristiques de chaque commande (date de commande, numéro client, montant de la commande, ...). Une rupture sur la rubrique "NumCommande" permet de séparer les différentes commandes.
La requête "REQ_ProduitCommandé" sélectionne l'ensemble des produits d'une commande spécifiée. Cette requête attend en paramètre un numéro de commande.
L'état "ETAT_ProduitCommandé" est basé sur la requête "REQ_ProduitCommandé". Cet état imprime uniquement les produits sélectionnés par la requête "REQ_ProduitCommandé".
L'état "ETAT_ProduitCommandé" correspond à l'état secondaire. Cet état sera imprimé après chaque rupture.

Manipulations à effectuer

  1. Créez l'état "ETAT_Commande" (option "Fichier .. Nouveau .. État"). Cet état correspond à l'état principal.Créez l'état "ETAT_Commande" : cet état correspond à l'état principal.
    • Cliquez sur Nouveau parmi les boutons d'accès rapide.
    • Dans la roue qui s'affiche, cliquez sur "Etat". La fenêtre de création d'un nouvel élément s'affiche : cliquez sur "Etat" puis sur "Etat".
  2. Créez la requête "REQ_ProduitCommandé". Pour plus de détails, consultez Créer une requête paramétrée.
  3. Créez l'état "ETAT_ProduitCommandé" (option "Fichier .. Nouveau .. État"). Cet état correspond à l'état secondaire.
    Remarque : Le bloc Bas de page de cet état ne sera pas imprimé. Pour plus de détails sur les blocs de l'état imbriqué imprimés, consultez le paragraphe Blocs de l'état secondaire.
    Créez l'état "ETAT_ProduitCommandé" : cet état correspond à l'état secondaire.
    • Cliquez sur Nouveau parmi les boutons d'accès rapide.
    • Dans la roue qui s'affiche, cliquez sur "Etat". La fenêtre de création d'un nouvel élément s'affiche : cliquez sur "Etat" puis sur "Etat".
      Remarque : Le bloc Bas de page de cet état ne sera pas imprimé. Pour plus de détails sur les blocs de l'état imbriqué imprimés, consultez le paragraphe Blocs de l'état secondaire.Remarque : Le bloc Pied de page de cet état ne sera pas imprimé. Pour plus de détails sur les blocs de l'état imbriqué imprimés, consultez le paragraphe Blocs de l'état secondaire.
  4. Dans le traitement "Après impression" du bloc Bas de rupture de l'état "ETAT_Commande", saisissez le code suivant :Dans le traitement "Après impression" du bloc Fin de rupture de l'état "ETAT_Commande", saisissez le code suivant :
    // Initialiser la requête et
    // passer en paramètre le numéro de commande en cours d'impression
    iInitRequêteEtat(ETAT_ProduitCommandé, MaSource.NumCommande)
    // Imprimer l'état imbriqué
    iImprimeEtat(ETAT_ProduitCommandé)
Exemple 2 : Etats imbriqués avec des orientations différentes (Paysage/Portrait)

Exemple à réaliser

L'état principal est en paysage "ETAT_PAYSAGE". Pour chaque élément imprimé, un sous-état en portrait "ETAT_PORTRAIT" soit être appelé. Dans le code "Après impression" du bloc corps de l'état principal, il est nécessaire de lancer l'état secondaire en changeant l'orientation. Ensuite, l'état secondaire doit rétablir l'orientation de l'état principal en fin d'impression.

Manipulations à effectuer

  1. Créez l'état "ETAT_PAYSAGE" (option "Fichier .. Nouveau .. Etat") et choisissez une orientation en mode paysage. Cet état correspond à l'état principal.
    Remarque : Cet état peut être un état de n'importe quel type utilisant des données provenant de n'importe quelle source : fichier, requête, table, programmation, ...
    Créez l'état "ETAT_PAYSAGE" : cet état correspond à l'état principal.
    • Cliquez sur Nouveau parmi les boutons d'accès rapide.
    • Dans la roue qui s'affiche, cliquez sur "Etat". La fenêtre de création d'un nouvel élément s'affiche : cliquez sur "Etat" puis sur "Etat".
    • Choisissez une orientation en mode paysage.
      Remarque : Cet état peut être un état de n'importe quel type utilisant des données provenant de n'importe quelle source : fichier, requête, table, programmation, ...
  2. Dans la description de l'état principal, dans l'onglet "Options", cochez "Imprimer l'état tel quel".
  3. Dans l'onglet "Format", indiquez les marges et le retrait. Validez la fenêtre de description de l'état.
  4. Créez l'état "ETAT_PORTRAIT" (option "Fichier .. Nouveau .. Etat") et choisissez une orientation en mode portrait. Cet état correspond à l'état secondaire.
    Remarque : Cet état peut être un état de n'importe quel type utilisant des données provenant de n'importe quelle source : fichier, requête, table, programmation, ...
    Créez l'état "ETAT_PORTRAIT" : cet état correspond à l'état secondaire.
    • Cliquez sur Nouveau parmi les boutons d'accès rapide.
    • Dans la roue qui s'affiche, cliquez sur "Etat". La fenêtre de création d'un nouvel élément s'affiche : cliquez sur "Etat" puis sur "Etat".
    • Choisissez une orientation en mode portrait.
      Remarque : Cet état peut être un état de n'importe quel type utilisant des données provenant de n'importe quelle source : fichier, requête, table, programmation, ...
  5. Dans la description de l'état secondaire, dans l'onglet "Options", cochez "Imprimer l'état tel quel".
  6. Dans l'onglet "Format", indiquez les mêmes marges et le même retrait que dans l'état principal. Validez la fenêtre de description de l'état.
  7. Dans le traitement "Après impression" du bloc BAS DE PAGE de l'état "ETAT_PAYSAGE" (état principal), saisissez le code suivant :
    // Appel de l'état qui a une orientation différente (donc en portrait ici)
    iImprimeEtat(ETAT_PORTRAIT)
    // Note : Si cet état secondaire à un bas de page, ce bas de page ne sera pas imprimé
Particularités des états secondaires

Blocs de l'état secondaire

Par défaut, lors de l'impression d'un état secondaire (grâce à la fonction iImprimeEtat), tous les blocs de l'état secondaire sont imprimés sauf les blocs suivants :
  • le bloc Haut de page.
  • le bloc Bas de page.
Pour forcer l'impression de ces blocs, utilisez la fonction iHautBasPageImbriqué.
Remarque : Si l'état secondaire contient un tableau dont l'entête est présent dans le bloc Haut de page, seul le bloc Bas de page ne sera pas imprimé (tous les autres blocs seront imprimés). Dans ce cas, le bloc Haut de page sera imprimé avant la première ligne du tableau (de l'état secondaire).
Par défaut, lors de l'impression d'un état secondaire (grâce à la fonction iImprimeEtat), tous les blocs de l'état secondaire sont imprimés sauf les blocs suivants :
  • le bloc En-tête de page.
  • le bloc Pied de page.
Pour forcer l'impression de ces blocs, utilisez la fonction iHautBasPageImbriqué.
Remarque : Si l'état secondaire contient un tableau dont l'entête est présent dans le bloc En-tête de page, seul le bloc Pied de page ne sera pas imprimé (tous les autres blocs seront imprimés). Dans ce cas, le bloc En-tête de page sera imprimé avant la première ligne du tableau (de l'état secondaire).

Orientation de l'état secondaire

L'état secondaire et l'état principal peuvent avoir des orientations différentes. Il est cependant nécessaire dans ce cas d'appeler la fonction iParamètre afin de modifier l'orientation de l'impression en conséquence.
Versions 17 et supérieures
Remarque : Pour effectuer des impressions utilisant des états avec des orientations différentes (portrait/paysage), il est conseillé d'utiliser l'enchaînement d'états. Cette méthode est très simple à mettre en oeuvre. Pour plus de détails, consultez Enchaîner des états.
Nouveauté 17
Remarque : Pour effectuer des impressions utilisant des états avec des orientations différentes (portrait/paysage), il est conseillé d'utiliser l'enchaînement d'états. Cette méthode est très simple à mettre en oeuvre. Pour plus de détails, consultez Enchaîner des états.
Remarque : Pour effectuer des impressions utilisant des états avec des orientations différentes (portrait/paysage), il est conseillé d'utiliser l'enchaînement d'états. Cette méthode est très simple à mettre en oeuvre. Pour plus de détails, consultez Enchaîner des états.

Saut de page de l'état secondaire

Les sauts de page définis dans un état secondaire seront pris en compte lors de l'impression de l'état principal.

État secondaire basé sur une requête paramétrée

Si l'état secondaire est basé sur une requête paramétrée, utilisez la fonction iInitRequêteEtat pour passer les paramètres à la requête. Cette fonction doit être utilisée avant la fonction iImprimeEtat.

État secondaire basé sur une requête utilisant une connexion spécifique

Si l'état secondaire est basé sur une requête manipulant une connexion spécifique, utilisez la fonction iInitRequêteEtatConnexion pour exécuter cette requête (et lui passer si nécessaire des paramètres). Cette fonction doit être utilisée avant la fonction iImprimeEtat.

État secondaire imprimé depuis un bloc de bas de page

Si l'état secondaire est imprimé depuis un bloc de bas de page, ses blocs de bas de page ne seront pas imprimés.

Affichage du nombre de pages total de l'état secondaire

Il faut ajouter un compteur de pages dans l'état principal pour que le compteur de pages de l'état imbriqué fonctionne. Il est cependant possible de rendre invisible le compteur de l'état principal si nécessaire.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire