|
|
|
|
|
- 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 le nom de 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
Manipuler un onglet dynamique par programmation
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 OngletOuvre.
Ouvrir un volet d'onglet via le bouton "+" Pour ouvrir un volet d'onglet via le bouton "+" présent dans le champ Onglet : - 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".
- 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 OngletOuvre. - 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 OngletOuvre 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 OngletOuvre, 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 OngletOuvre. 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.
- 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
Alias_Onglet = OngletOuvre(ONG_Menu, "Client "+ Client.IDClient, FI_FicheClient, Client.IDClient)
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 : - 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.
- Dans la fenêtre de description du champ Onglet, affichez l'onglet "Détail".
- Pour l'option "Fenêtre interne sur bouton Nouveau (+)", sélectionnez la fenêtre interne "Menu".
- 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 ChangeFenêtreSource en utilisant la syntaxe :
ChangeFenêtreSource(<Fenêtre interne de choix>, <Fenêtre interne de remplacement>) Par exemple :
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.
MonVolet est un Champ
MonVolet <- VoletDuChamp(MoiMême)
MonVolet.Libellé = MonVolet.Libellé + " (Modifié)"
- La fonction OngletEtat 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 :
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 = OngletOuvre(ONG_Test, "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 le nom de 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 :
oFenInterne est un Champ <- ONG_Test[AliasVolet1]
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 :
Info({AliasVolet1 + ".NomChamp", indChamp})
Info({AliasVolet1 + ".NomVariable", indVariable})
ExécuteTraitement(AliasVolet1 + ".pNomProcédure", trtProcédure)
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.
| | AvecBoutonFermeture | La 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.
| AvecBoutonNouveau | La 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êtreSiNouveau | La 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éSiNouveau | La 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émoriserLaConfiguration | La 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.
| OngletDynamique | La 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étachable | La 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.
|
Liste des exemples associés :
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|