Page 1 sur 1

HyperlinkGadget - couleur de survol

Publié : mer. 18/août/2021 21:04
par thierryd44
Bonjour.
Pour une application, je voudrai pouvoir changer "à la volée" la couleur de survol d'un lien hypertexte. L'idée est de permettre à l'utilisateur de changer le thème de couleur de l'application.
Il est facile de définir celle-ci à la création du gadget, mais je ne trouve rien sur le changement de couleur.
SetGadgetColor ne le permet pas.
J'ai cherché un peu du coté de l'API Windows, mais si je trouve un moyen de changer les couleurs systèmes (SetSystemColors_() : un peu violent tout de même :!: ), je ne vois rien non plus au niveau d'un controle.
Quelqu'un aurait-il déjà rencontré ce problème ou une idée de solution ?
D'avance merci à tous.

Re: HyperlinkGadget - couleur de survol

Publié : sam. 21/août/2021 21:44
par venom
Bonjour Thierry d44.

Édit:
Autant pour moi, en effet SetGadgetColor permet uniquement quand il n'y a pas survol. :oops:





@++

Re: HyperlinkGadget - couleur de survol

Publié : dim. 22/août/2021 14:14
par falsam
Changer la couleur de survol nativement n'est pas possible effectivement mais il est possible de recréer les gadgets.

Ce code permet de changer la couleur des liens ainsi que la couleur des liens quand ils sont survolés.

Par défaut les liens sont rouges et la couleur de survol de ces liens est violette.

Code : Tout sélectionner

Declare Start()
Declare OnEventGadget()
Declare Exit()

Start()

Procedure start()
  SetGadgetFont(#PB_All, LoadFont(0, "Arial", 10))
  
  If OpenWindow(0, 0, 0, 800, 600, "HyperlinkGadget couleur à la volée", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    
    HyperLinkGadget(0, 10, 10, 250,20,"Premier lien", RGB(0,0,0))
    HyperLinkGadget(1, 10, 30, 250,40,"Deuxieme lien", RGB(0,0,0))
    
    ButtonGadget(2, 10, 100, 80, 24, "Lien Rouge")
    ButtonGadget(3, 100, 100, 80, 24, "Lien Bleu")
    
    ButtonGadget(4, 190, 100, 80, 24, "Survol Jaune")
    ButtonGadget(5, 280, 100, 80, 24, "Survol Violet")
    
    BindGadgetEvent(2, @OnEventGadget())
    BindGadgetEvent(3, @OnEventGadget())
    BindGadgetEvent(4, @OnEventGadget())
    BindGadgetEvent(5, @OnEventGadget())
    
    BindEvent(#PB_Event_CloseWindow, @Exit())
    
    ;Par defaut couleur des liens rouges survol violet
    PostEvent(#PB_Event_Gadget, 0, 2)
    PostEvent(#PB_Event_Gadget, 0, 5)
    
    Repeat : WaitWindowEvent() : ForEver
  EndIf
EndProcedure

Procedure OnEventGadget()
  Static Color, BackColor
  
  Select EventGadget()
    Case 2 : Color =  RGB(255, 0, 0)
    Case 3 : Color =  RGB(0, 0, 255)
    Case 4 : BackColor =  RGB(255, 215, 0)
    Case 5 : BackColor =  RGB(255, 0, 255)
  EndSelect 
  
  HyperLinkGadget(0, 10, 10, 250,20,"Premier lien", BackColor)
  HyperLinkGadget(1, 10, 30, 250,40,"Deuxieme lien", BackColor)
  SetGadgetColor(0, #PB_Gadget_FrontColor, Color)
  SetGadgetColor(1, #PB_Gadget_FrontColor, Color)
EndProcedure

Procedure Exit()
  End
EndProcedure


Re: HyperlinkGadget - couleur de survol

Publié : dim. 22/août/2021 20:51
par venom
Salut falsam,

Je n'ai pas tout compris a ton code, mais le résultat est là 8) Bravo. Dommage qu'il n'y a pas l'option en natif. Vue que c'est faisable :wink:






@++

Re: HyperlinkGadget - couleur de survol

Publié : sam. 28/août/2021 12:21
par thierryd44
Bonjour.
Avec un peu de retard, merci à tous pour votre aide.
J'ai effectivement adopté la solution de Falsam.
A+