[Résolu] RibbonToolTip : je vois pas comment le faire?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

[Résolu] RibbonToolTip : je vois pas comment le faire?

Message par GallyHC »

Bonjour,

Je voudrais ajouter a mon code du "Ribbon" un ToolTip (le vrai de préférence). mais la je pèche complètement... Si quelqu'un à une piste pour moi je suis preneur.

Cordialement,
GallyHC
Dernière modification par GallyHC le mer. 31/juil./2013 23:57, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: RibbonToolTip je vois pas comment le faire?

Message par Backup »

tu peux utiliser ce code ...

la procedure BalloonTip a besoin de connaitre le Gadget sur lequel elle va marcher
puis les parametres suivant :
;Syntaxe : BalloonTip(Gadget,TipTitle.s, TipText.s, [TipIcon.i], [TipFontId.i], [TipBackColor.i], [TipFrontColor.i])
;
;Gadget : Gadget concerné
;TipTitle : Titre de l'aide
;TipText : Texte de l'aide
;
;En option :
;TipIcon : Icon à afficher
; #TOOLTIP_WARNING_ICON - #TOOLTIP_ERROR_ICON - #TOOLTIP_INFO_ICON - #TOOLTIP_NO_ICON (Defaut)
;
;TipFontId : Id Police de caractére
;TipBackColor : Couleur d'arriére plan
;TipFrontColor: Couleur de police
;

pour tester laisse le curseur de souris sur l'un des boutons .. il y a 2 toolTip differents
l'un en Bulle fond jaune
l'autre en rectangle , Fond bleuté, multiligne

Code : Tout sélectionner

;BalloonTip

;Syntaxe : BalloonTip(Gadget,TipTitle.s, TipText.s, [TipIcon.i], [TipFontId.i], [TipBackColor.i], [TipFrontColor.i])
;
;Gadget       : Gadget concerné
;TipTitle     : Titre de l'aide
;TipText      : Texte de l'aide
;
;En option :
;TipIcon      : Icon à afficher
;               #TOOLTIP_WARNING_ICON - #TOOLTIP_ERROR_ICON - #TOOLTIP_INFO_ICON - #TOOLTIP_NO_ICON (Defaut)
;
;TipFontId    : Id Police de caractére
;TipBackColor : Couleur d'arriére plan
;TipFrontColor: Couleur de police
;

Procedure BalloonTip(Gadget.l, TipTitle.s, TipText.s, TipIcon=#TOOLTIP_NO_ICON, TipFontId=0, TipBackColor.i=0, TipFrontColor=0)
	Protected ToolTip.l, Balloon.TOOLINFO
	ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP|#TTS_NOPREFIX|#TTS_BALLOON,0,0,0,0,GadgetID(Gadget),0,GetModuleHandle_(0),0)
	
	Balloon\cbSize=SizeOf(TOOLINFO)
	Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
	Balloon\hWnd=GadgetID(Gadget)
	Balloon\uId=GadgetID(Gadget)
	Balloon\lpszText = @TipText
	
	If TipFontID<>0
		SendMessage_(ToolTip, #WM_SETFONT, TipFontID, 0)
	EndIf 
	
	If Not(TipBackColor=0 And TipFrontColor=0)
		SetWindowTheme_(ToolTip, #NUL$, #NUL$)
		SendMessage_(ToolTip, #TTM_SETTIPTEXTCOLOR, TipFrontColor,0)
		SendMessage_(ToolTip, #TTM_SETTIPBKCOLOR, TipBackColor,0)
	EndIf 
	
	SendMessage_(ToolTip, #TTM_SETTITLE, TipIcon, @TipTitle)
	SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
EndProcedure


;/////// TEST //////////////////////////////////////////////////////////
EnableExplicit

Enumeration
	#Mainform
	#Button1
	#Button2
EndEnumeration

Global FontID1.l

OpenWindow(#Mainform, 235, 2, 400, 200, "ToolTip Test",  #PB_Window_SystemMenu |#PB_Window_ScreenCentered )   
ButtonGadget(#Button1, 300, 10, 80, 22, "Bouton 1")
BalloonTip(#Button1, "Titre de l'aide 1", "Ligne 1", #TOOLTIP_WARNING_ICON, 0, $CCF9FF, #Black)

FontID1 = LoadFont(1, "Arial", 12, #PB_Font_HighQuality)
ButtonGadget(#Button2, 300, 35, 80, 22, "Bouton 2")
BalloonTip(#Button2,"Titre de l'aide 2", "Ligne 1" +#CRLF$+ "Ligne 2" +#CRLF$+ "Ligne 3", #TOOLTIP_WARNING_ICON, FontID1)

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
		End
	EndSelect 
ForEver; EPB
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: RibbonToolTip je vois pas comment le faire?

Message par GallyHC »

Merci.

Par contre petite question : Si je met 2 fois "BalloonTip()" sur le même gadget, est ce que le premier est bien annulé? Car comme je gère moi même les boutons du "Ribbon" il devrais être changer a chaque changement de bouton dans le "Ribbon".

GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: RibbonToolTip je vois pas comment le faire?

Message par GallyHC »

J'ai trouver la solution pour mon problème :).

Donc voila avec ce qui faut pour qu'il puisse être modifier a volonté dans le même Gadget :

Code : Tout sélectionner

Global iHwndTip.i

Procedure CreateBalloonTip(Gadget.l, TipTitle.s, TipText.s, TipIcon = #TOOLTIP_NO_ICON, TipFontId = 0, TipBackColor.i = 0, TipFrontColor = 0)
  ;
  Protected Balloon.TOOLINFO
  
  If iHwndTip <> 0
    DestroyWindow_(iHwndTip)
  EndIf
  iHwndTip = CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON, 0, 0, 0, 0, GadgetID(Gadget), 0, GetModuleHandle_(0), 0)

  Balloon\cbSize    = SizeOf(TOOLINFO)
  Balloon\uFlags    = #TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd      = GadgetID(Gadget)
  Balloon\uId       = GadgetID(Gadget)
  Balloon\lpszText  = @TipText
   
  If TipFontID <> 0
    SendMessage_(iHwndTip, #WM_SETFONT, TipFontID, 0)
  EndIf 
  If Not(TipBackColor = 0 And TipFrontColor = 0)
    SetWindowTheme_(iHwndTip, #NUL$, #NUL$)
    SendMessage_(iHwndTip, #TTM_SETTIPTEXTCOLOR, TipFrontColor, 0)
    SendMessage_(iHwndTip, #TTM_SETTIPBKCOLOR,   TipBackColor,  0)
  EndIf 
  SendMessage_(iHwndTip, #TTM_SETTITLE, TipIcon, @TipTitle)
  SendMessage_(iHwndTip, #TTM_ADDTOOL,  0,       Balloon)
  
EndProcedure
En gros j'ai juste ajouter :

Code : Tout sélectionner

  If iHwndTip <> 0
    DestroyWindow_(iHwndTip)
  EndIf
Encore merci Dobro

Cordialement,
GallyHC

PS: j'ai remarquer que si l'on ne met pas de "TipTitle", le multi-ligne ne fonctionne plus (Bizarre)?
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: [Résolu] RibbonToolTip : je vois pas comment le faire?

Message par Mesa »

Sous Xp, si on clique sur les boutons alors les tooltips ne fonctionnent plus ou très mal.

En faisant comme ça, ça fonctionne:

Code : Tout sélectionner

;BalloonTip

;Syntaxe : BalloonTip(Gadget,TipTitle.s, TipText.s, [TipIcon.i], [TipFontId.i], [TipBackColor.i], [TipFrontColor.i])
;
;Gadget       : Gadget concerné
;TipTitle     : Titre de l'aide
;TipText      : Texte de l'aide
;
;En option :
;TipIcon      : Icon à afficher
;               #TOOLTIP_WARNING_ICON - #TOOLTIP_ERROR_ICON - #TOOLTIP_INFO_ICON - #TOOLTIP_NO_ICON (Defaut)
;
;TipFontId    : Id Police de caractére
;TipBackColor : Couleur d'arriére plan
;TipFrontColor: Couleur de police
;

Procedure BalloonTip(Gadget.l, TipTitle.s, TipText.s, TipIcon=#TOOLTIP_NO_ICON, TipFontId=0, TipBackColor.i=0, TipFrontColor=0)
  Protected ToolTip.l, Balloon.TOOLINFO
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP|#TTS_NOPREFIX|#TTS_BALLOON,0,0,0,0,GadgetID(Gadget),0,GetModuleHandle_(0),0)
  
  If iHwndTip <> 0 
    DestroyWindow_(iHwndTip) 
  EndIf 
  
  Balloon\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd=GadgetID(Gadget)
  Balloon\uId=GadgetID(Gadget)
  Balloon\lpszText = @TipText
  
  If TipFontID<>0
    SendMessage_(ToolTip, #WM_SETFONT, TipFontID, 0)
  EndIf 
  
  If Not(TipBackColor=0 And TipFrontColor=0)
    SetWindowTheme_(ToolTip, #NUL$, #NUL$)
    SendMessage_(ToolTip, #TTM_SETTIPTEXTCOLOR, TipFrontColor,0)
    SendMessage_(ToolTip, #TTM_SETTIPBKCOLOR, TipBackColor,0)
  EndIf 
  
  SendMessage_(ToolTip, #TTM_SETTITLE, TipIcon, @TipTitle)
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
EndProcedure


;/////// TEST //////////////////////////////////////////////////////////
;EnableExplicit

Enumeration
  #Mainform
  #Button1
  #Button2
EndEnumeration

Global FontID1.l

OpenWindow(#Mainform, 235, 2, 400, 200, "ToolTip Test",  #PB_Window_SystemMenu |#PB_Window_ScreenCentered )   
ButtonGadget(#Button1, 300, 10, 80, 22, "Bouton 1")
BalloonTip(#Button1, "Titre de l'aide 1", "Ligne 1", #TOOLTIP_WARNING_ICON, 0, $CCF9FF, #Black)

FontID1 = LoadFont(1, "Arial", 12, #PB_Font_HighQuality)
ButtonGadget(#Button2, 300, 35, 80, 22, "Bouton 2")
BalloonTip(#Button2,"Titre de l'aide 2", "Ligne 1" +#CRLF$+ "Ligne 2" +#CRLF$+ "Ligne 3",#TOOLTIP_INFO_ICON, FontID1)

Repeat
  Event = WaitWindowEvent()
  Event2 = EventType()  
  
  Select Event
      
    Case #PB_Event_CloseWindow
      End
  EndSelect 
  
  Select EventGadget()
      
      
    Case #Button1 
      Select Event2
        Case #PB_EventType_LeftClick   
          Debug "Bouton 1 cliqué!"
          BalloonTip(#Button1, "Titre de l'aide 1", "Ligne 1", #TOOLTIP_WARNING_ICON, 0, $CCF9FF, #Black)
          
      EndSelect
      
    Case #Button2 
      Select Event2
        Case #PB_EventType_LeftClick   
          Debug "Bouton 2 cliqué!"
          BalloonTip(#Button2,"Titre de l'aide 2", "Ligne 1" +#CRLF$+ "Ligne 2" +#CRLF$+ "Ligne 3",#TOOLTIP_INFO_ICON, FontID1)
          
      EndSelect
      
  EndSelect
  
  
ForEver; EPB

Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: [Résolu] RibbonToolTip : je vois pas comment le faire?

Message par Mesa »

Une variante qui utilise la nouvelle fonction de pb520 BindGadgetEvent() et qui simplifie la programmation (pas besoin de s'occuper du clic-droit, etc).

Code : Tout sélectionner



;BalloonTip

;Syntaxe : BalloonTip(Gadget,TipTitle.s, TipText.s, [TipIcon.i], [TipFontId.i], [TipBackColor.i], [TipFrontColor.i])
;
;Gadget       : Gadget concerné
;TipTitle     : Titre de l'aide
;TipText      : Texte de l'aide
;
;En option :
;TipIcon      : Icon à afficher
;               #TOOLTIP_WARNING_ICON - #TOOLTIP_ERROR_ICON - #TOOLTIP_INFO_ICON - #TOOLTIP_NO_ICON (Defaut)
;
;TipFontId    : Id Police de caractére
;TipBackColor : Couleur d'arriére plan
;TipFrontColor: Couleur de police
;

Procedure BalloonTip(Gadget.l, TipTitle.s, TipText.s, TipIcon=#TOOLTIP_NO_ICON, TipFontId=0, TipBackColor.i=0, TipFrontColor=0)
  Protected ToolTip.l, Balloon.TOOLINFO
  ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP|#TTS_NOPREFIX|#TTS_BALLOON,0,0,0,0,GadgetID(Gadget),0,GetModuleHandle_(0),0)
  
  If iHwndTip <> 0 
    DestroyWindow_(iHwndTip) 
  EndIf 
  
  Balloon\cbSize=SizeOf(TOOLINFO)
  Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  Balloon\hWnd=GadgetID(Gadget)
  Balloon\uId=GadgetID(Gadget)
  Balloon\lpszText = @TipText
  
  If TipFontID<>0
    SendMessage_(ToolTip, #WM_SETFONT, TipFontID, 0)
  EndIf 
  
  If Not(TipBackColor=0 And TipFrontColor=0)
    SetWindowTheme_(ToolTip, #NUL$, #NUL$)
    SendMessage_(ToolTip, #TTM_SETTIPTEXTCOLOR, TipFrontColor,0)
    SendMessage_(ToolTip, #TTM_SETTIPBKCOLOR, TipBackColor,0)
  EndIf 
  
  SendMessage_(ToolTip, #TTM_SETTITLE, TipIcon, @TipTitle)
  SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
EndProcedure


;/////// TEST //////////////////////////////////////////////////////////
;EnableExplicit

Enumeration
  #Mainform
  #Button1
  #Button2
EndEnumeration

Global FontID1.l

Procedure ToolTipEvent()
  BalloonTip(#Button1, "Titre de l'aide 1", "Ligne 1", #TOOLTIP_WARNING_ICON, 0, $CCF9FF, #Black)
  BalloonTip(#Button2,"Titre de l'aide 2", "Ligne 1" +#CRLF$+ "Ligne 2" +#CRLF$+ "Ligne 3",#TOOLTIP_INFO_ICON, FontID1)
  EndProcedure

OpenWindow(#Mainform, 235, 2, 400, 200, "ToolTip Test",  #PB_Window_SystemMenu |#PB_Window_ScreenCentered )   
ButtonGadget(#Button1, 300, 10, 80, 22, "Bouton 1")
BalloonTip(#Button1, "Titre de l'aide 1", "Ligne 1", #TOOLTIP_WARNING_ICON, 0, $CCF9FF, #Black)

FontID1 = LoadFont(1, "Arial", 12, #PB_Font_HighQuality)
ButtonGadget(#Button2, 300, 35, 80, 22, "Bouton 2")
BalloonTip(#Button2,"Titre de l'aide 2", "Ligne 1" +#CRLF$+ "Ligne 2" +#CRLF$+ "Ligne 3",#TOOLTIP_INFO_ICON, FontID1)

BindGadgetEvent(#Button1, @ToolTipEvent())
BindGadgetEvent(#Button2, @ToolTipEvent())

Repeat
  Event = WaitWindowEvent()
  Event2 = EventType()  
  
  Select Event
      
    Case #PB_Event_CloseWindow
      End
  EndSelect 
  
  Select EventGadget()
      
      
    Case #Button1 
      Select Event2
        Case #PB_EventType_LeftClick   
          Debug "Bouton 1 cliqué!"
          
      EndSelect
      
    Case #Button2 
      Select Event2
        Case #PB_EventType_LeftClick   
          Debug "Bouton 2 cliqué!"
          
      EndSelect
      
  EndSelect
  
  
ForEver

Mesa.
Répondre