PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Re: Ascenceur bloqué ds treeview
Re: Ascenceur bloqué ds treeview
Iniciado por lg, 10,mar. 2006 15:04 - No hay respuesta
Publicado el 10,marzo 2006 - 15:04
Ca y est, j'ai enfin trouvé le truc.

Mes constatations :
- l'ascenseur ne se bloque après l'ajout d'un nouvel élément, après avoir supprimé le premier élément de l'arbre. Cas typique :

ArbreSupprimeTout(...)
ArbreAjoute(...)

J'avais remarqué depuis longtemps que l'ascenceur se débloque lorsque le redessin de la fenêtre contenant le champ arbre est provoqué par Windows, par exemple
- en déplaçant ladite fenêtre
- en allant dans une autre application dont la fenêtre couvre tout ou partie de ladite fenêtre.

Ma solution :
- Créer dans le projet une fenêtre indépendante de 1x1 pixel (Fen_1x1 dans mon projet)
- Après un appel à la fonction ArbreAjoute(...), ouvrir et fermer cette fenêtre de 1 pixel, en s'assurant que sa position est au-dessus de la fenêtre en cours.

Voir code en fin de réponse.

Dans mon projet, cela fonctionne impeccablement.

Cordialement, Laurent

=========

1. Déclarations globales de la fenêtre de Fen_1x1 :

PROCEDURE Fen_1x1(x est un entier, y est un entier)

MoiMême..X = x
MoiMême..Y = y

-----------
2. Procédure globale au projet :

PROCEDURE gp_Fen_1x1_Afficher()
// Déclarations
c_Alias est une chaîne // Alias de la fenêtre appelante
x est un entier // Position X de la fenêtre appelante
y est un entier // Position Y de la fenêtre appelante

// Recherche du nom d'alias de la fenêtre
c_Alias = FenEnExécution()

// Contrôle du nom d'alias
SI c_Alias = "" ALORS RENVOYER Faux

// Coordonnées actuelles de la fenêtre
x = {c_Alias}..X
y = {c_Alias}..Y

// Ouverture de la fenêtre
OuvreSoeur(Fen_1x1, x, y)

// Valeur de retour
RENVOYER Vrai



-----------
3. Procédure globale au projet :

PROCEDURE gp_Fen_1x1_Fermer()
SI FenEtat(Fen_1x1) <> Inexistant ALORS Ferme(Fen_1x1)

-----------
4. Exemple d'appel


ArbreAjoute(...)

// Contournement du bug des ascenceurs bloqués
SI gp_Fen_1x1_Afficher() ALORS gp_Fen_1x1_Fermer()