Un TextGadget qui réponde à la souris...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
barnierchristophe
Messages : 64
Inscription : lun. 07/févr./2005 11:18

Un TextGadget qui réponde à la souris...

Message par barnierchristophe »

Je cherche un gadget qui aurait les caractéristiques d'un textgadget sans bord, mais qui réponde au clic de la souris.
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message par minirop »

un TextGadget avec l'option #PB_String_BorderLess ?
barnierchristophe
Messages : 64
Inscription : lun. 07/févr./2005 11:18

Message par barnierchristophe »

oui, mais qui réagisse au clic de la souris.
Gratteur
Messages : 147
Inscription : ven. 22/avr./2005 23:02

Message par Gratteur »

Code : Tout sélectionner

If WindowEvent() = #WM_LBUTTONDOWN
  If GadgetID(#TextGadget) = WindowFromPoint_(DesktopMouseX(), DesktopMouseY())
    ; [TON_CODE]
  EndIf
EndIf
C'est ça que tu voulais ?
barnierchristophe
Messages : 64
Inscription : lun. 07/févr./2005 11:18

Message par barnierchristophe »

C'est ce que j'utilise, mais malheureusement ça ne marche pas avec les textgadget.......
Dernière modification par barnierchristophe le mer. 09/mai/2007 0:00, modifié 1 fois.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

et en trichant ?

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 322, 35, "TextGadget")
  CreateGadgetList(WindowID(0))
  StringGadget(5, 8, 10, 306, 20, "ton texte ici", #PB_String_ReadOnly|#PB_String_BorderLess)
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Dri
barnierchristophe
Messages : 64
Inscription : lun. 07/févr./2005 11:18

Message par barnierchristophe »

j'ai essayé cette option mais les stringgadget ne sont pas multiligne.....
Gratteur
Messages : 147
Inscription : ven. 22/avr./2005 23:02

Message par Gratteur »

Autant pour moi, dans ce cas on peut y aller à la conan :

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 50, "TextGadget")
  If CreateGadgetList(WindowID(0))
    ContainerGadget(0, 5, 5, 295, 40)
      TextGadget(1, 0, 0, GadgetWidth(0), GadgetHeight(0), "Ton texte")
    CloseGadgetList()
    Repeat
      event = WaitWindowEvent()
      Select event
        Case #WM_LBUTTONDOWN
        If GadgetID(0) = WindowFromPoint_(DesktopMouseX(), DesktopMouseY())
          Debug "ok"
        EndIf
      EndSelect
    Until event = #PB_Event_CloseWindow
  EndIf
EndIf
barnierchristophe
Messages : 64
Inscription : lun. 07/févr./2005 11:18

Message par barnierchristophe »

C'est ce que j'ai fini par faire, je voulais savoir s'il n'y avais pas plus simple....
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

bah y suffit de tricher jusqu'au bout

Code : Tout sélectionner

#ClickableTextGadget = #ES_MULTILINE | #PB_String_ReadOnly | #PB_String_BorderLess

If OpenWindow(0, 0, 0, 322, 60, "TextGadget")
  CreateGadgetList( WindowID(0) )
  StringGadget(5, 8, 10, 306, 40, "ton texte" + #CRLF$ + "ici", #ClickableTextGadget)
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Dri
Gratteur
Messages : 147
Inscription : ven. 22/avr./2005 23:02

Message par Gratteur »

Ou sans tricher en gardant le textgadget :

Code : Tout sélectionner

Procedure.b CurseurSurGadget(gadget, fenetre)
  x = WindowMouseX(fenetre) : y = WindowMouseY(fenetre)
  gx = GadgetX(gadget) : gy = GadgetY(gadget)
  If x >= gx And x <= gx+GadgetWidth(gadget)
    If y >= gy And y <= gy+GadgetHeight(gadget)
      ProcedureReturn #True
    EndIf
  EndIf
  ProcedureReturn #False
EndProcedure

If OpenWindow(0, 0, 0, 300, 50, "TextGadget")
  If CreateGadgetList(WindowID(0))
    TextGadget(1, 5, 5, 300, 50, "Ton texte")
    Repeat
      event = WaitWindowEvent()
      Select event
        Case #WM_LBUTTONDOWN
          If CurseurSurGadget(1, 0)
            Debug "ok"
          EndIf
      EndSelect
    Until event = #PB_Event_CloseWindow
  EndIf
EndIf
barnierchristophe
Messages : 64
Inscription : lun. 07/févr./2005 11:18

Message par barnierchristophe »

La solution de Dr DRi est pas mal, sauf que les textgadget gèrent seuls le retour chariot. Je garderais donc la solution du textgadget doublé avec un container gadget qui me semble la plus pratique. Merci à tous pour vos propositions. Sinon j'utilise la librairie du Soldat Inconnu pour les boutons sans bord; C'est impeccable
Répondre