Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bien le bonjour adeptes du PB,
je cherche aujourd'hui à connaitre le nombre d'instances d'une fenêtre. Je m'explique :
Une fenêtre va chercher des documents dans la base de données et me les affiches chacun dans une fenêtres (du texte).
Lorsque la dernière fenêtre de document est fermée par l'utilisateur, je souhaite faire remonter une autre fenêtre.
En gros, je cherche à savoir le nombre d'instances de ma fenêtre à la fermeture (donc dans mon close()), de sorte que si il n'y en a qu'une, donc la dernière, elle appelle mon autre fenêtre avant de se fermer.
j'espère que c'est suffisamment clair, merci d'avance !
Dernière modification par Gilles (13-08-2010 09:07:47)
Hors ligne
Bonjour, tu peux (un peu comme c'est fait dans un projet standard MDI via wizard) tenir à jour un tableau des fenêtres ouvertes (ajout à l'open, retrait au close)
Hors ligne
ou alors, boucler sur les fenêtres, et les identifier en t'inspirant de ce code exemple :
// The following script for a menu selection loops through the open sheets in front-to-back order and displays the names of the open sheets in the ListBox lb_sheets: boolean bValid window wSheet lb_sheets.Reset() wSheet = ParentWindow.GetFirstSheet() IF IsValid(wSheet) THEN lb_sheets.AddItem(wSheet.Title) DO wSheet = ParentWindow.GetNextSheet(wSheet) bValid = IsValid (wSheet) IF bValid THEN lb_sheets.AddItem(wSheet.Title) LOOP WHILE bValid END IF
Hors ligne
ta fenêtre qui affiche tes documents c'est toujours la même?
Si c'est le cas alors créé une variable SHARED qui s'incrémente de 1 à l'open et qui se décrémente de 1 également sur le close
et dans le close tu teste cette variable si elle est à 1 alors tu es en train de fermer ta dernière fenêtre document
Dernière modification par Yanis (12-08-2010 12:41:42)
Hors ligne
le problème c'est que ces fenêtres se ferment, donc je ne peux pas stocker de variable.
je met en place un script depuis celui de erasorz pour essayer, qui incrémente de 1 à chaque fois qu'il tombe sur ma fenêtre dans la liste, j'aurai normalement 1 si c'est la dernière
Je pensais qu'il y avait un moyen simple d'avoir les fenêtres en instance.
Hors ligne
Une variable SHARED est disponible tant que la classe est encore instancié au moins une fois.
Les variables SHARED se définissent dans la listbox ( global variable , shared variable , instance varibale etc..)
Exemple : si tu as un fenêtre w_document et que tu l'ouvre 5 fois ta variable SHARED seras toujours valide tant que la dernière instance n'est pas fermé par l'utilisateur
Dernière modification par Yanis (12-08-2010 12:56:04)
Hors ligne
merci pour l'explication, vivement la semaine prochaine (formation PB )
je vais faire une petite recherche sur les variables SHARED, sinon le script fonctionne, merci !
Hors ligne
Les variables SHARED sont la plus part de temps utilisées pour celà : compter le nombre d'instance d'un objet , d'une fenêtre etc..
Hors ligne
Petite question personnelle. je vois dans ton profil <Nogent sur seine> ne travaillerais tu pas pour le groupe SOUFFLET.
Hors ligne
tu travaille donc sur l'application négoce
Hors ligne
oui et je connais bien ALEXANDRA
Hors ligne