Changer la couleur de la ligne sélectionnée

La couleur du “HighLight” par défaut sous Windows

Sous Windows, la couleur de fond de la ligne sélectionnée change lorsque vous cliquez.

C’est une couleur dépendant de vos choix de couleurs système, et Powerbuilder l’utilise aussi par défaut.

Typiquement, cela vous donne une ligne de datawindow (ou autre) à la couleur standard du système. Bleu dans cet exemple :

ligne sélectionnée grisée

Une ligne sélectionnée est colorée par défaut

OK.

Mais comment faire pour fixer votre couleur de sélection ?

Utilisation de l’API Windows “SetSysColors”

Tout d’abord, déclarer une fonction alias dans “local external functions” :

FUNCTION ulong SetSysColors (Integer nChanges, &
Integer nIndex[], &
Long lpColorValues[])  LIBRARY “user32.dll”

Attention ! Les paramètres iIndex et lpColorValues sont bien des tableaux !

Ils reprennent les données pour l’ensemble des couleurs système de Windows.

La valeur nIndex correspondant à la ligne sélectionnée est 13. (Il peut être utile de coder une constante “COLOR_HIGHLIGHT” pour s’y retrouver )

Sachant cela, il vous reste à coder l’appel à cette API. Par exemple à l’ouverture de votre application, via :

constant integer COLOR_HIGHLIGHT = 13
integer li_coltype[]
long ll_newcolor[]

li_coltype[1]=COLOR_HIGHLIGHT
ll_newcolor[1]=rgb(252,96,56)
setsyscolors(1,li_coltype,ll_newcolor)

Et vous obtiendrez une couleur de fond pour votre sélection du plus bel effet 😉

La couleur de sélection modifiée

Mise en surbrillance avec la couleur choisie

 

 

Dernière chose : cette modification porte sur toute ligne sélectionnée dans votre système, même hors de votre application. Il est donc conseillé de sauvegarder la couleur d’origine avant de la modifier afin de la rétablir en sortant de l’application. Vous pouvez utiliser pour cela la fonction miroir à savoir GetSysColors, de manière similaire.

Bon amusement !

Bybye !

 

 

 

This entry was posted in PowerBuilder, PowerScript and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *