Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'ai placé un Tab control dans ma fenêtre avec plusieurs onglets. J'aimerai que lorsque je click sur un bouton, tout mes onglets disparaissent...
Est ce posible?
Hors ligne
Bonjour, tu peux le cacher :
tab_1.Hide( )
Hors ligne
oui, mais la fonction hide() permet de cacher et moi je veux qu'après appuis sur le bouton, le Tab control ne possède plus aucun onglet.
Hors ligne
poche a écrit:
oui, mais la fonction hide() permet de cacher et moi je veux qu'après appuis sur le bouton, le Tab control ne possède plus aucun onglet.
CloseTab
Hors ligne
For li_cnt = 1 To UpperBound( tab_1.Control ) tab_1.CloseTab( tab_1.Control[ li_cnt ] ) Next
Hors ligne
Merci
Hors ligne
Pourquoi ce la me met une erreur lorsque je met ceci :
li_nbre =UpperBound( tab_1.Control ) For li_cnt = 1 To li_nbre tab_1.CloseTab( tab_1.Control[ li_cnt ] ) Next
Alors que cela me génère pas une erreur lorsque j'écris cela (le problème avec ce code c'est qu'il me reste un onglet alors que je veux tous les supprimer!!!)
For li_cnt = 1 To UpperBound( tab_1.Control ) tab_1.CloseTab( tab_1.Control[ li_cnt ] ) Next
modération : Ne pas oublier code=pb
Hors ligne
Quelle est ton erreur?
Hors ligne
Error : Array boundary exceeded at line 26 in clicked of object cb_affich of w_fenetre
Hors ligne
Heu ... si ensuite la fenetre ne possède plus de 'tab', n'est ce pas plus simple de fermer simplement la fenêtre (sauf si ce n'est pas le but recherché )
PS : Vu que je suis aussi sur Java, j'ai pensé à l'erreur des indices de tableaux qui commenceraient à 0 au lieu de 1, est ce que c'est le cas aussi sous powerbuilder?
Dernière modification par Nephtis (21-08-2007 09:05:05)
Hors ligne
Le but est de supprimer tous les onglet et d'en rajouter d'autre part la suite.
Hors ligne
poche a écrit:
Le but est de supprimer tous les onglet et d'en rajouter d'autre part la suite.
ben ferme la fenetre et ouvres en une avec les onglets que tu veux non ?
Hors ligne
Voila le fonctionnement :
Je change la date, j'appuis sur un bouton, il charge les données dans les datawindows et suivants les données dans les datawindows, plusieur onglets se crés.
Hors ligne
essaye dans l'ordre inverse :
li_nbre =UpperBound( tab_1.Control ) For li_cnt = li_nbre To 1 Step -1 tab_1.CloseTab( tab_1.Control[ li_cnt ] ) Next
Hors ligne
Par contre un bon debuggage serait de verifier en temps réel les valeurs de tes variables (si ça ne marche toujours pas) parce que le message d'erreur c'est que tu essaie d'acceder à un élément du tableau qui n'existe pas
Hors ligne
J'ai fais ceci et ça marche super merci:
li_nbr_onglet=UpperBound( tab_1.Control ) DO UNTIL li_nbr_onglet = 0 tab_1.CloseTab(tab_1.Control[ li_nbr_onglet ] ) li_nbr_onglet=li_nbr_onglet - 1 LOOP
Hors ligne
poche a écrit:
J'ai fais ceci et ça marche super merci:
Code: pb
li_nbr_onglet=UpperBound( tab_1.Control ) DO UNTIL li_nbr_onglet = 0 tab_1.CloseTab(tab_1.Control[ li_nbr_onglet ] ) li_nbr_onglet=li_nbr_onglet - 1 LOOP
oui cela revient au même que le For Next avec un step de -1... (avec une ligne de code en plus )_
Hors ligne
J'en profite pour rebondir sur la réponse d'Erasorz et faire un petit rappel d'ordre générale.
Lorsque l'on supprime, il est toujours préférable de partir de la fin pour revenir au début.
C'est valable pour un tableau de control (car il se resize à chaque fois), mais également pour une DW, des enregistrements en base, etc.
Simplement car dans de nombreux cas cela évite aux systèmes (PB, BDD, etc.) de gérer le décalage des éléments.
C'est donc souvent plus rapide...
Hors ligne