Page 1 sur 1

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

Publié : mar. 08/mai/2007 17:32
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.

Publié : mar. 08/mai/2007 17:44
par minirop
un TextGadget avec l'option #PB_String_BorderLess ?

Publié : mar. 08/mai/2007 17:56
par barnierchristophe
oui, mais qui réagisse au clic de la souris.

Publié : mar. 08/mai/2007 18:21
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 ?

Publié : mar. 08/mai/2007 18:50
par barnierchristophe
C'est ce que j'utilise, mais malheureusement ça ne marche pas avec les textgadget.......

Publié : mar. 08/mai/2007 18:56
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

Publié : mar. 08/mai/2007 19:45
par barnierchristophe
j'ai essayé cette option mais les stringgadget ne sont pas multiligne.....

Publié : mar. 08/mai/2007 20:35
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

Publié : mar. 08/mai/2007 20:36
par barnierchristophe
C'est ce que j'ai fini par faire, je voulais savoir s'il n'y avais pas plus simple....

Publié : mar. 08/mai/2007 20:49
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

Publié : mar. 08/mai/2007 22:55
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

Publié : mar. 08/mai/2007 23:59
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