Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Dans ma datawindow j'ai une colonne que j'affiche sous forme de case à cocher (Properties -> Edit -> Style Type -> Checkbox).
Je ne veux pas de bordure, alors je l'enlève (Properties -> General -> Border -> NoBorder (0)).
Lorsque j'exécute mon application, j'obtiens tout de même un drôle de cadre :
Si l'application est lancée depuis PowerBuilder (run), alors ce cadre disparait aussitôt que je promène ma souris sur la datawindow.
Si l'application est déployée et exécutée depuis le .exe, alors le cadre persiste.
Dans certains cas, ces deux colonnes ne sont pas modifiables par l'utilisateur, leur valeur est mise à jour lors du retrieve() ou par script. Pour les rendre non modifiables, j'appelle simplement ce petit bout de script dans mon postopen() :
ma_datawindow.SetTabOrder('ma_colonne_1', 0) ma_datawindow.SetTabOrder('ma_colonne_checkbox', 0)
Le contrôle 'ma_colonne_1' est situé juste au-dessus de ma checkbox. Il s'avère que le cadre de ma checkbox apparait lorsque je mets le tab order à 0 pour 'ma_colonne_1' qui est située au-dessus de ma checkbox o_O
Je ne comprends pas ce comportement étrange... Mais surtout je ne parviens pas à m'en débarrasser :-/
Auriez-vous une idée ?
Merci
Dernière modification par Nyphel (15-10-2008 12:04:59)
Hors ligne
Bonjour,
Le cadre dont tu parles indique simplement que ta colonne checkbox à le focus.
C'est le comportement standard d'une checkbox (non modifiable à ma connaissance), la propriété "Border" indique simplement le style de bordure qui va encadré ta checkbox et ne modifie en aucun le rectangle indiquant que le focus est sur ta colonne.
Il est normale que le cadre indiquant le focus apparaîsse lorsque tu désactives la première colonne puisqu'il n'y plus qu'une seule colonne active dans ta datawindow donc elle prend automatiquement le focus.
Pour ne pas faire apparaître le cadre lorsque tu désactives les deux colonnes, il suffit d'encadrer ton code avec SetRedraw :
ma_datawindow.SetRedraw(FALSE) ma_datawindow.SetTabOrder('ma_colonne_checkbox', 0) ma_datawindow.SetTabOrder('ma_colonne_1', 0) ma_datawindow.SetRedraw(TRUE)
Hors ligne
Héhé merci Buck, ça fonctionne parfaitement grâce à toi !
J'avais remarqué la propriété "Show focus rectangle" sur mes autres colonnes, mais comme je n'avais pas la propriété pour la colonne de style CHeckbox, je pensais que le focus rectangle était tout simplement désactivée pour les checkboxes... Alors qu'en fait elle est activée et n'est pas désactivable
Merci encore, voilà un nouveau sujet résolu !
Hors ligne