|
- 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
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 de manipuler un champ Onglet dynamique directement par programmation. Il suffit 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 en création" et le "Libellé par défaut du nouveau volet".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 // Nouvel onglet affichant la fiche du client en cours Alias_Onglet = OngletOuvre(ONG_Menu, "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, il suffit de créer une fenêtre interne "Menu". Par exemple, cette fenêtre peut proposer à l'utilisateur d'afficher une fiche client, une facture ou la liste des commandes. Dans ce cas, l'utilisateur choisit le type de volet d'onglet à créer et le volet d'onglet en cours 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 :
// 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 :
<NomFenêtre>.<Nom Onglet>[<NomFenêtre>.<Nom 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 :
NomChampOnglet[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 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 :
// 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 l'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.
NomChampOnglet = NumVolet
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 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.
| | 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.
| 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 est automatiquement sauvée et restaurée.
- Modifier la configuration des volets d'un champ Onglet dynamique 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 peuvent être sortis de la fenêtre par l'utilisateur final.
- Autoriser ou non les volets d'un champ Onglet dynamique à ê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.
|
|
|
|
| |
| Cliquez sur [Ajouter] pour publier un commentaire |
|
| |
|
| |
| |
| |
| |
| |
| |
| | |
| |