Re: Création d'onglet par programmation?

Posté par R&B le 19/7/2006 10:30:35
Bonjour

Pour résumer le fil je vous invite à travailler avec la propriété ..visible des panneaux d'un champ onglet.

Le clonnage de panneau d'un onglet n'existe pas. Nous vous avons alors indiquer qu'il faut créer un nombre suffisant de panneaux invisibles par défaut (ou rendus invisibles à l'ouverture de la fenêtre).

Alors, après la saisie de votre date (bouton ou à chaque modification + test si date valide), vous pourrez activer/désactiver les panneaux voulus et en affecter le libellé.

Enfin, comme vous pouvez manipuler la visibilité de chaque panneau, vous pouvez aisément n'en laisser qu'un seul actif... en masquant tous les autres.

dans tous les cas, vous allez devoir manipuler les propriété visibles dans des boucles.
// déclaration des globales de la fenêtre
fnVoletsActifs est un entier // nombre de volets 'actifs'
fnVolets = 20 //Nombre totals de volets invisibles dans votre champ onglet


// initialisation de la fenêtre
i est un entier
// affiche le premier volet (saisie de la date)
VoletActive(1,vrai)
// masque les suivants
POUR i=2 A fnVolets
   VoletActive(i,faux)
FIN


// Procédure locale
// Active/inactive un volet en particulier
PROCEDURE VoletActive(pnVolet,pbActive = Vrai,pdDate = DateDuJour())
   // ne traite pas les volet inexistants
   SI pnVolet>fnVolets ALORS RETOUR
   // Active l'onglet voulu
   monChampOnglet[pnVolet]..visible = pbActive
   // Affecte le libellé
   SI pbActive ALORS monChampOnglet[pnVolet]..libelle=DateVersChaine(pdDate,"JJ/MM/AAAA")
FIN


A l'utilisation on obtient :
// Masque le premier volet
VoletActive(1,Faux)
// Affiche un volet par années entre la daite saisie et aujourd'hui
dDate est une date = SAIS_DATE
i est un entier = 2
TANTQUE dDate<=DateDuJour() et i<=20
   VoletActive(i,Vrai,dDate)
   dDate..Année++
   i++
FIN

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=4346&post_id=18077