DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / Développer une application ou un site / Champs, fenêtres et pages / Champs : Types disponibles / Champ Onglet
  • Présentation
  • Ouverture d'un volet d'onglet dynamique
  • Ouvrir un volet d'onglet via le bouton "+"
  • Ouvrir un volet d'onglet via la fonction OngletOuvre
  • Astuce : Proposer un volet "Menu" permettant à l'utilisateur de choisir le type de volet à créer
  • Manipuler un volet d'onglet dynamique
  • Changer le volet d'onglet dynamique actif
  • Connaître le libellé du volet d'onglet dynamique actif
  • Récupérer la fenêtre interne affichée dans un volet
  • Accéder au contenu de la fenêtre interne affichée dans un volet
  • Propriétés spécifiques aux champs Onglet
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Manipuler un onglet dynamique par programmation (syntaxe préfixée)
Présentation
WINDEV permet de manipuler les champs Onglet dynamique par programmation grâce aux fonctions OngletXXX et à diverses propriétés du WLangage. Il est également possible d'utiliser directement la variable du champ Onglet dans le code.
Attention : Les volets d'onglet statiques et les volets d'onglet dynamiques ne sont pas identifiés de la même manière :
  • les volets d'onglet statiques sont identifiés par le numéro du volet actif.
  • les volets d'onglet dynamiques sont identifiés par l'alias du volet actif.
Remarque : Lorsque la fenêtre interne manipulée dans l'onglet dynamique utilise des fichiers de données HFSQL, il est important que la fenêtre interne utilise un contexte HFSQL indépendant.
Ouverture d'un volet d'onglet dynamique
Il est possible d'ouvrir un volet d'onglet dynamique de différentes façons :
  • via le bouton "+" du champ Onglet. Dans ce cas, les options précisées dans la fenêtre de description du champ Onglet sont prises en compte.
  • par programmation, via la fonction <Onglet>.Ouvre.

Ouvrir un volet d'onglet via le bouton "+"

Pour ouvrir un volet d'onglet via le bouton "+" présent dans le champ Onglet :
  1. Dans la fenêtre de description du champ Onglet, onglet "Détail", cochez l'option "Avec bouton "Nouveau" (+)" et indiquez la "Fenêtre interne sur bouton Nouveau (+)" et le "Libellé par défaut du nouveau volet".
  2. La fenêtre interne ouverte par le bouton "+" peut être :
    • une fenêtre interne spécifique (par exemple ajout d'une fiche client).
      Lorsque l'utilisateur cliquera sur le bouton "+", les volets d'onglet créés seront identiques, basés sur la même fenêtre interne.
      Remarque : Si la fenêtre interne attend des paramètres, il est nécessaire d'ouvrir le volet d'onglet par programmation avec la fonction <Onglet>.Ouvre.
    • aucune fenêtre interne.
      Dans ce cas, il est nécessaire de préciser par programmation la fenêtre interne à ouvrir. Pour cela, il suffit d'utiliser la fonction <Onglet>.Ouvre dans l'événement "Création d'un volet" du champ Onglet (voir le paragraphe Ouvrir un volet d'onglet via la fonction OngletOuvre).
Remarque : Le bouton "+" de l'onglet dynamique appelle automatiquement l'événement "Création d'un volet" du champ Onglet. Si cet événement utilise la fonction <Onglet>.Ouvre, cet événement sera prioritaire sur la fenêtre interne spécifiée dans l'interface.

Ouvrir un volet d'onglet via la fonction OngletOuvre

Pour ouvrir un volet d'onglet, il est également possible d'utiliser la fonction <Onglet>.Ouvre.
Cette fonction peut par exemple :
  • être utilisée dans un bouton pour ouvrir un volet d'onglet supplémentaire dans un champ Onglet.
  • être utilisé dans l'événement "Création d'un volet" du champ Onglet.
La fonction <Onglet>.Ouvre permet de :
  • Connaître l'alias du volet d'onglet. Cet alias permet de manipuler le volet d'onglet par programmation. Cet alias peut également être connu par la propriété Valeur ou par la propriété Alias.
  • Spécifier le libellé du volet d'onglet.
  • Spécifier la fenêtre interne à ouvrir.
  • Passer des paramètres à la fenêtre interne à ouvrir.
Exemple :
Alias_Onglet est une chaîne
// Nouvel onglet affichant la fiche du client en cours
Alias_Onglet = ONG_Menu.Ouvre("Client "+ Client.IDClient, FI_FicheClient, Client.IDClient)
// Modification de l'image du volet d'onglet
ONG_Menu[Alias_Onglet].Image = "NvClient.png"

Astuce : Proposer un volet "Menu" permettant à l'utilisateur de choisir le type de volet à créer

Certaines interfaces peuvent proposer à l'utilisateur, lors du clic sur le bouton "+", un menu lui permettant de choisir le type d'information à afficher.
Pour réaliser ce type d'interface :
  1. Créez une fenêtre interne "Menu". Cette fenêtre interne contient les options permettant de choisir les données à afficher dans le nouveau volet d'onglet. Par exemple, cette fenêtre peut proposer à l'utilisateur d'afficher une fiche client, une facture ou la liste des commandes.
  2. Dans la fenêtre de description du champ Onglet, affichez l'onglet "Détail".
  3. Pour l'option "Fenêtre interne sur bouton Nouveau (+)", sélectionnez la fenêtre interne "Menu".
  4. Validez.
Dans ce cas :
  • L'utilisateur clique sur "+" pour ajouter un volet d'onglet.
  • Un nouveau volet d'onglet s'affiche, contenant le menu (fenêtre interne créée précédemment).
  • L'utilisateur choisit dans le menu le type de volet d'onglet à afficher.
  • Le volet d'onglet en cours (celui qui affiche le menu) est remplacé par le volet choisi.
Pour réaliser ce type d'interface, quelques adaptations sont nécessaires :
  • Dans le code de clic du bouton permettant de choisir le type de volet, il suffit d'utiliser la fonction <Fenetre interne>.ChangeFenêtreSource en utilisant la syntaxe :
    ChangeFenêtreSource(<Fenêtre interne de choix>, <Fenêtre interne de remplacement>)

    Par exemple :
    // Remplace la fenêtre de choix par une fiche
    ChangeFenêtreSource(FI_Choix, FI_Fiche)
  • Pour manipuler l'onglet ajouté, il suffit d'utiliser la syntaxe :
    <Fenêtre>.<Champ Onglet>[<Fenêtre>.<Champ Onglet>]

    Par exemple, pour modifier le libellé de l'onglet ouvert :
    FEN_DYNMAIN.ONG_MDI[FEN_DYNMAIN.ONG_MDI].Libellé = "Fiche de " + HeureSys()
Manipuler un volet d'onglet dynamique
Pour manipuler un volet d'onglet dynamique, utilisez la syntaxe suivante :
ChampOnglet[AliasDuVoletOnglet].NomPropriété = ValeurPropriété
Par exemple :
ONG_MonOnglet[ONG_MonOnglet].Etat = Grisé
Remarques :
  • La fonction VoletDuChamp permet de connaître le nom du volet dynamique (l'alias) affichant un champ spécifique.
    // Clic sur bouton "BTN_MAJ"
    MonVolet est un Champ
    MonVolet <- VoletDuChamp(MoiMême)
    MonVolet.Libellé = MonVolet.Libellé + " (Modifié)"
  • La fonction <Onglet>.Etat permet de connaître l'état d'un volet d'onglet dynamique : actif, flottant, inexistant.
  • Il est possible de connaître les alias des volets dynamiques ouverts avec la fonction EnumèreChamp utilisée sur le champ Onglet :
    // Remplir un champ Combo avec la liste des champs de la fenêtre
    i est un entier = 1
    ResChamp est une chaîne
    ResChamp = EnumèreChamp(ONG_MonOnglet, i)
    TANTQUE ResChamp <> ""
    i++
    Trace(ResChamp)
    ResChamp = EnumèreChamp(ONG_MonOnglet, i)
    FIN
Changer le volet d'onglet dynamique actif
Par défaut, le dernier volet d'onglet dynamique créé est activé. Il est possible de changer l'onglet en cours par programmation.
Pour activer un volet d'onglet dynamique :
  • Affectez le champ Onglet avec l'alias du volet d'onglet dynamique à activer :
    Nom du champ Onglet = AliasDuVoletOnglet
  • Utilisez la propriété Valeur.
Rappel : Pour activer un volet d'onglet statique, il suffit d'indiquer le numéro du volet à activer.
Nom du champ Onglet = Numéro volet
Connaître le libellé du volet d'onglet dynamique actif
Pour récupérer le libellé de l'onglet actif, il suffit d'utiliser la propriété Libellé sur le volet d'onglet (identifié par son alias).
Par exemple :
AliasOnglet1 est une chaîne = ONG_Test.OngletOuvre("Mon onglet 1", "FI_FenêtreInterne")
Trace(ONG_Test[AliasOnglet1].Libellé)
La propriété Libellé permet également de modifier le libellé du volet d'onglet.
Récupérer la fenêtre interne affichée dans un volet
Pour récupérer le nom de la fenêtre interne affichée dans un volet dynamique, il est possible d'utiliser le code suivant :
// Récupère le volet affiché 
oFenInterne est un Champ <- ONG_Test[AliasVolet1]

// Récupère la fenêtre interne associée au volet
sNomFenêtreInterne est une chaîne
sNomFenêtreInterne = EnumèreChamp(oFenInterne, 1, parOrdreDeCréation)
Accéder au contenu de la fenêtre interne affichée dans un volet
Pour accéder à la valeur d'un champ ou d'une variable de la fenêtre interne affichée dans un volet dynamique, il est possible d'utiliser les opérateurs d'indirection :
// Récupère la valeur d'un champ de la fenêtre interne 
Info({AliasVolet1 + ".NomChamp", indChamp})

// Récupère la valeur d'une variable de la fenêtre interne
Info({AliasVolet1 + ".NomVariable", indVariable})

// Appel une procédure de la fenêtre interne
ExécuteTraitement(AliasVolet1 + ".pNomProcédure", trtProcédure)

// Equivalent Ã  :
MaProcédure est une procédure = gsAlias_Onglet + ".pNomProcédure"
MaProcédure()
L'utilisation de procédures locales à la fenêtre pour manipuler ses champs doit être préférée à l'accès direct aux champs et variables par indirection. Cela permet de garder la fenêtre interne autonome et facilite la maintenance.
Propriétés spécifiques aux champs Onglet
Les propriétés suivantes sont spécifiques à la gestion des caractéristiques d'un champ Onglet dynamique par programmation.
AvecBoutonFermetureLa propriété AvecBoutonFermeture permet de :
  • Savoir si tous les volets d'un onglet dynamique possèdent une croix de fermeture.
  • Configurer tous les volets d'un onglet dynamique pour afficher une croix de fermeture.
AvecBoutonNouveauLa propriété AvecBoutonNouveau permet de :
  • Savoir si un champ Onglet dynamique propose une croix d'ajout.
  • Configurer un champ Onglet dynamique pour proposer ou non une croix d'ajout.
DétachéLa propriété Détaché permet de savoir si un volet d'un champ Onglet ou d'un champ Ruban est détaché.
FenêtreSiNouveauLa propriété FenêtreSiNouveau permet de connaître et de modifier le nom de la fenêtre interne à ouvrir si l'utilisateur final ouvre un nouveau volet dans un champ Onglet dynamique.
LibelléSiNouveauLa propriété LibelléSiNouveau permet de connaître et de modifier le libellé du nouveau volet ouvert par l'utilisateur final dans un champ Onglet dynamique.
MémoriserLaConfigurationLa propriété MémoriserLaConfiguration permet de :
  • Savoir si la configuration des volets d'un champ Onglet dynamique ou d'un champ Ruban est automatiquement sauvée et restaurée.
  • Modifier la configuration des volets d'un champ Onglet dynamique ou d'un champ Ruban pour qu'elle soit automatiquement sauvée et restaurée ou non.
OngletDynamiqueLa propriété OngletDynamique permet de :
  • Connaître le type d'un champ Onglet (onglet statique ou onglet dynamique).
  • Modifier le type d'un champ Onglet (onglet statique ou onglet dynamique).
VoletDétachableLa propriété VoletDétachable permet de :
  • Savoir si les volets d'un champ Onglet dynamique ou d'un champ Ruban peuvent être sortis de la fenêtre par l'utilisateur final.
  • Autoriser ou non les volets d'un champ Onglet dynamique ou d'un champ Ruban à être sortis de la fenêtre par l'utilisateur final.
Pour connaître la liste complète des propriétés du WLangage pouvant être utilisées avec un champ de type Onglet, consultez Propriétés associées à un champ Onglet.
Liste des exemples associés :
WD Multi-Fenetrage Exemples didactiques (WINDEV) : WD Multi-Fenetrage
[ + ] Cet exemple permet de comprendre les bases de la gestion du Multi-fenêtrage et des onglets dynamiques avec WINDEV.

Cet exemple présente une interface simple de gestion de fiches client sous deux formes :
- multi fenêtrée avec une interface MDI,
- multi onglets avec un champ onglet dynamique.
Version minimum requise
  • Version 23
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale