Bonjour,
m'en vais vous conter la misère découverte ce week-end, et une comme ça je n'avais encore jamais vu, et s'il y en a d'autres planquées dans des coins, faut pas s'étonner que des fusées explosent et que des voitures sans conducteur deviennent folles : je sens que l'avenir qui se prépare va être terrible...
Soit une seule et unique bête fiche d'un petit programme ; sur cette fiche un TPageControl avec 3 TTabSheets ; sur le 2e onglet (parce que c'est comme ça et, non, je n'ai pas testé sur les autres onglets) deux TMemos et d'autres trucs (TGroupBox, TRadioGroup, TButton, TCheckbox, TPanel contenant un tas de trucs dont un TMemo aussi, on va voir pourquoi je précise ce point), bref, du bazar habituel.
Pour faciliter l'utilisation des onglets et comme beaucoup de choses se passent au clavier (déplacement du curseur des TTrackBars, entre autres), j'ai implémenté un événement OnKeyDown lié à la fiche (oui, avec KeyPreview à True ) et en utilisant donc les touches "s", "d" ou "p", je peux basculer sur le 1er, le 2e ou le 3e onglet. Fastoche et bien sympatoche !
L'un des deux TMemos du 2e onglet me servait lors du debug à afficher des résultats de calcul ; maintenant que tout tourne bien, je n'en ai plus besoin et j'ai donc commenté les lignes de code y afférant et passé la propriété "Visible" de l'objet à "False". J'aurais pu le supprimer mais en cas de besoin, ça va plus vite de juste basculer la propriété, donc bon, je l'ai gardé.
Et c'est ensuite au runtime qu'on rigole : si je bascule sur le 2e onglet avec la touche "d", rien à signaler tout est parfait, mais si j'y accède par la souris, ben, les deux TMemos posés directement sur cet onglet deviennent, vous l'avez compris, visibles, hé oui !
Regardez la copie d'écran : à gauche l'inspecteur d'objet (en haut l'arbo des objet avec un TMemo sélectionné, dessous les propriétés de l'objet), et à droite pendant l'exécution le TMemo bien visible car j'ai utilisé la souris.
Un truc qui va faire plaisir à Jon : le problème n'existe pas sous Windows (XP pour le moment, pas testé ailleurs), d'où le titre bien orienté.
Une machine Linux tourne sous Laz 1.4 / FPC 2.6 et l'autre sous Laz 1.6rc1 / FPC 3.0 mais je ne pense pas que ça ait beaucoup d'importance car ce matin, je faisais générer depuis la machine avec 1.6/3.0 et exécuter sur l'autre machine avec un résultat identiquement foireux.
Les deux machines (l'une physique et l'autre virtuelle) exécutent à peu près le même Debian avec à peu près la même version de GTK2.
Je vous laisse imaginer maintenant ce qui pourrait se passer en cas d'information importante affichée dans un Memo1 et masquée par l'affichage d'un Memo2 intempestif dont on a prévu qu'il ne soit pas visible mais qu'en fait il est bien là...
J'ai un peu la haine, ce matin, surtout si je précise que tous les autres objets avec Visible à False sur l'onglet concerné ne s'affichent pas, comme prévu.
Partager