PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 03-06-2014 12:03:51

John77  
Membre Geek
Lieu: Chambéry
Date d'inscription: 26-10-2012
Messages: 51
Pépites: 227
Banque: 0

SetRowFocusIndicator(Picture) -> L'indicateur n'apparaît pas

Bonjour

Un autre bug bien casse-bonbons hérité de la migration de PB5 à PB11.5.

Dans la fenêtre principale de l'appli, après le Retrieve, le focus est mis sur la DataWindow principale. Dans l'évènement GetFocus de cette DataWindow, si on est dans la phase qui suit une ouverture de la fenêtre, on appelle la fonction SetRowFocusIndicator avec un contrôle Picture qui contient un Bitmap.

De manière aléatoire, et beaucoup plus souvent en exécutant l’appli compilé (très rare en mode Run) le Focus Indicator n’apparaît pas, bien que la fonction m’ait renvoyé 1 (je log la valeur de retour dans un fichier).

Vu que la fenêtre appelait plusieurs fois cette fonction à l’ouverture, je me suis d’abord débrouillé pour qu’il n’y ait plus qu’un seul appel mais ça continue de reproduire.
J’ai essayé de poster le seul appel de la fonction au cas où, ça ne se corrige pas.
J’ai ensuite ajouté des boutons embarquant le code pour enlever le Focus Indicator et le remettre, ça renvoie 1 mais il n’apparaît toujours pas. En ajoutant un autre bouton qui lui met « Hand! » en Indicator, la main apparaît mais on ne me permet pas pour l’instant de changer cet élément de l’interface.

J’ai cherché un peu partout sur le net mais je n’ai trouvé aucune référence officielle à ce bug et le seul post d’un utilisateur questionnant là-dessus n’a pas eu de réponse.

Quelqu’un aurait-il déjà croisé ce dysfonctionnement ou aurait une idée ?

Merci d'avance pour vos réponses,
John

Hors ligne

 

#2 03-06-2014 12:31:04

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: SetRowFocusIndicator(Picture) -> L'indicateur n'apparaît pas

Bonjour,

Est-ce que l'image du picture control s'affiche ?
Si ce n'est pas une image prédéfinie de PB (ex: custom038!), il faut que l'image soit accessible (via PBR ou physiquement) donc vérifier le chemin vers l'image (un chemin absolue vers l'image ou s'assurer que le CurrentDirectory n'a pas changé).


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#3 03-06-2014 12:53:47

John77  
Membre Geek
Lieu: Chambéry
Date d'inscription: 26-10-2012
Messages: 51
Pépites: 227
Banque: 0

Re: SetRowFocusIndicator(Picture) -> L'indicateur n'apparaît pas

Bonjour xlat

Je passe le contrôle en invisible à l'Open de la fenêtre et le bitmap est bien dans le pbr.
L'appli date de 1997, et ce problème arrivait de manière très anecdotique quand c'était encore du PB5.

La 1ière fois que je me suis penché sur ce problème, j'avais laissé le contrôle visible pour vérifié. L'image était bien là mais pas l'indicateur.
Toujours pour testé, j'ai même placé physiquement le bitmap dans mes répertoires applicatifs ... sans succès.

Dernière modification par John77 (03-06-2014 12:58:12)

Hors ligne

 

#4 03-06-2014 15:02:49

John77  
Membre Geek
Lieu: Chambéry
Date d'inscription: 26-10-2012
Messages: 51
Pépites: 227
Banque: 0

Re: SetRowFocusIndicator(Picture) -> L'indicateur n'apparaît pas

Par acquis de conscience, je viens de tester en remplaçant le Bitmap par l'image native « ExecuteSQL! » mais ça continue de se reproduire

Hors ligne

 

#5 03-06-2014 19:39:59

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: SetRowFocusIndicator(Picture) -> L'indicateur n'apparaît pas

Du coup ca ressemble à un bug d'affichage.
Est tu sures que quand l'indicateur n'est pas visible, la ligne courrante est bien visible a l'écran ?


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#6 04-06-2014 07:15:05

John77  
Membre Geek
Lieu: Chambéry
Date d'inscription: 26-10-2012
Messages: 51
Pépites: 227
Banque: 0

Re: SetRowFocusIndicator(Picture) -> L'indicateur n'apparaît pas

Oui, aucun filtre n'est appliqué dans cette fenêtre et la 1ière ligne visible est toujours la ligne courante à l'ouverture de la fenêtre.
De plus, j'ai 2 autres DataWindows dans cette fenêtre qui présente parfois les mêmes symptômes.

Avant, un seul contrôle Picture était affecté en RowFocusIndicator au 3 DataWindows.
Depuis que ce problème est apparu, après la migration de PB5 vers PB11.5), j'ai ajouter 2 autres contrôles, un pour chacune des DW.

Parfois, un seul RowFocusIndicator déconne sur les 3, parfois 2, parfois tous.

Hors ligne

 

#7 05-06-2014 08:18:52

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: SetRowFocusIndicator(Picture) -> L'indicateur n'apparaît pas

Bonjour,

Tu fais référence à une migration. Je vais faire quelques remarques par rapport à la migration qui peuvent entrainer quelques "dysfonctionnements" sur les datawindows ne sachant pas si elles sont à l'origine de ton problème.

Après une migration, la version du dataoject n'est en fait pas modifiée, tu peux t'en rendre compte en faisant une édition de la source l'entête comporte toujours ex :release 5; et non release 11.5 comme on peut s'y attendre.

Pour véritablement passer en syntaxe 11.5, il faut faire une speudo-modification et resauvegarder la datawindow pour accéder véritablement aux nouvelles fonctionnalités propre à la version.

Un exemple de dysfonctionnement, je ne comprenais pas pourquoi dans certaine dddw ne prenait pas en compte les lignes de couleurs alternées, alors que d'autres fonctionnées parfaitement, une simple resauvegarde suffit pour régler le problème. Il faut également faire attention également au ShareData d'avoir toutes les datawindows dans la même release....

J'ai une application ancienne qui a subit plusieurs migrations du coup je me retrouve avec des datawindows en release 5, release 7, release 9, release 11, release 11.5.

J'ai plusieurs datawindows avec des RowFocusIndicator en version 11.5.1 Build 4897 et je n'ai pas de problèmes particuliers.

Hors ligne

 

#8 05-06-2014 15:16:43

John77  
Membre Geek
Lieu: Chambéry
Date d'inscription: 26-10-2012
Messages: 51
Pépites: 227
Banque: 0

Re: SetRowFocusIndicator(Picture) -> L'indicateur n'apparaît pas

Merci pour ta remarque buck.

J'avais bien remarqué le numéro de release dans les exports d'objets mais je n'ai jamais tenté de le modifier.
Ici, cette fenêtre étant utiliser lors de la diffusion des JT, il me faudrait beaucoup de temps pour tester la non-régression alors que ma version est assez attendu pour ses corrections et est déjà dans le process de packaging pour télédistribution. Ma dead-line était aujourd'hui.

Pour en revenir à mon problème, hier, j'ai remplacé le contrôle Picture par « Hand! » à tous les appels de SetRowFocusIndicator. J'ai passé toute l'après-midi d'hier et toute la mâtiné d'aujourd'hui à "ouvrir/fermer la fenêtre" et "fermer/redémarrer l'appli" de temps en temps. Je n'ai plus reproduit le bug depuis.

J'ai l'impression que, pour une raison ou pour une autre (PB11.5 avec des DW PB5 peut-être), il y a un problème uniquement quand on passe un contrôle Picture à la fonction. Et ce, que l'image soit externe ou interne à PB.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22