onglets au "sud"

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

onglets au "sud"

Message par Dr. Dri »

je voudrais faire un PanelGadget avec les onglets en bas. Pour ca pas de problème je passe par SetWindowLong_() avec comme valeur 2 (pour le nom de la constante win32...) que j'ajoute au style précédent

Code : Tout sélectionner

Style = GetWindowLong_(PanelID, #GWL_Style)
SetWindowLong_(PanelID, #GWL_Style, Style|2)
Tout fonctionne bien sauf que je ne peux plus toucher aux onglets avec la sourie (pas essayé le clavier). Pourtant ca fonctionne avec le SetGadgetState(). Quelqu'un saurait comment mettre les onglets en bas et toujours pouvoir les utiliser ?

Dri
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Je te remercie pour le lien. J'attend une réponse sur le forum anglais. Tant que j'y suis, comment faire pour décider de la largeur d'un onglet ?

Dri
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Tu nous mijotte qdchose Dri ??? :lol:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Ha je suis découvert :D

Dri ^^

PS. je compte refaire un de mes progs en mieux :P
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Un indice, un indice ... :lol:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Dr. Dri a écrit :Je te remercie pour le lien. J'attend une réponse sur le forum anglais. Tant que j'y suis, comment faire pour décider de la largeur d'un onglet ?Dri
J'ai trouvé çà dans ma collection de sources :

Code : Tout sélectionner

;
; Set PanelGadget Tabs Width
;
If OpenWindow(0, 0, 0, 640, 480, #PB_Window_SystemMenu | #PB_Window_ScreenCentered , "Largeur tab") 
  If CreateGadgetList(WindowID()) 
    PanelGadget(1,30,90,600,310) 
    AddGadgetItem(1,0,"1") 
    AddGadgetItem(1,1,"2") 
    AddGadgetItem(1,2,"3") 
    AddGadgetItem(1,3,"4") 
    AddGadgetItem(1,4,"5") 
    AddGadgetItem(1,5,"6") 
    AddGadgetItem(1,6,"7") 
    AddGadgetItem(1,7,"8") 
  EndIf 
  Style = GetWindowLong_(GadgetID(1),#GWL_STYLE ) 
  Style = Style | #TCS_FIXEDWIDTH 
  result = SendMessage_(GadgetID(1), #TCM_SETITEMSIZE , 0, 30) ; Largeur = 30 pixels 
  SetWindowLong_(GadgetID(1),#GWL_STYLE,Style) 
  Repeat 
    EventID.l = WaitWindowEvent() 
  Until EventID = #PB_EventCloseWindow 
EndIf 
End
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Merci pour le code ^^

Dri
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

lionel_om a écrit :Un indice, un indice ... :lol:
Un utilitaire, mais je ne met plus les onglets en bas... Même si le code m'intéresse toujours...

Dri :P
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

On l'aura qd le 2ème indice, car là le 1er il est assez radin (onglet => utilitaire !!! #yes )
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

il ouvre des fichiers :P

Dri
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Je pars en vacs lundi et j'aurai pas la moindre idée de ce que ça peu être...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

bah j'espère que quand tu rentreras tu pourras le tester :P
Mais bon j'avance lentement... plein de choses à faire ^^

Dri ;)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Tnat que je suis sur les onglets... Quelqu'un sait comment désactiver un onglet dans un PanelGadget ?

Dri
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Dr. Dri a écrit :Tnat que je suis sur les onglets... Quelqu'un sait comment désactiver un onglet dans un PanelGadget ?Dri
Il y a des threads à ce sujet ici :
http://forums.purebasic.com/english/vie ... highlight=
http://forums.purebasic.com/english/vie ... highlight=

Code de localmotion34

Code : Tout sélectionner

Global OriginProc.l,textcolor 

Dim oldsel.l(1) 

Procedure tabproc(hwnd,msg,wParam,lParam) 
  Select msg 
    Case #WM_DRAWITEM 
      textbuffer.s=Space(255) 
      *lpdis.DRAWITEMSTRUCT=lParam 
      tab.TC_ITEM 
      Select *lpdis\CtlType 
        Case #ODT_TAB 
          Select *lpdis\itemState 
            Case #ODS_SELECTED 
              tab\Mask=#TCIF_TEXT 
              tab\pszText=@textbuffer 
              tab\cchTextMax=255 
              SendMessage_(*lpdis\hwndItem,#TCM_GETITEM,*lpdis\itemID,@tab) 
              textcolor.l= #Black 
            Case #ODS_SELECTED | #ODS_FOCUS 
              drawfoc.l=#True 
              
            Case 0 
              tab\Mask=#TCIF_PARAM 
              SendMessage_(*lpdis\hwndItem,#TCM_GETITEM,*lpdis\itemID,@tab) 
              If tab\lParam=1 
                tab\Mask=#TCIF_TEXT 
                tab\pszText=@textbuffer 
                tab\cchTextMax=255 
                SendMessage_(*lpdis\hwndItem,#TCM_GETITEM,*lpdis\itemID,@tab) 
                textcolor.l= #White 
                *lpdis\rcItem\left+5 
                *lpdis\rcItem\top+3 
                SetTextColor_(*lpdis\hdc, textcolor) 
                DrawText_(*lpdis\hdc, textbuffer, Len(textbuffer), *lpdis\rcItem, dtFlags) 
                textcolor.l= RGB(84,82,84) 
                *lpdis\rcItem\top-3 
                *lpdis\rcItem\left-5 
                ; this code here draws text just like windows disabled, grey with white shadow 
                ; by messing with the RECT coordinates 
              Else 
              tab\Mask=#TCIF_TEXT 
              tab\pszText=@textbuffer 
              tab\cchTextMax=255 
              SendMessage_(*lpdis\hwndItem,#TCM_GETITEM,*lpdis\itemID,@tab) 
              textcolor.l= #Black 
            EndIf 
          EndSelect 
          If drawfoc=#True 
            DrawFocusRect_(*lpdis\hdc, *lpdis\rcItem) 
          EndIf 
          SetBkMode_(*lpdis\hdc, #TRANSPARENT) 
          *lpdis\rcItem\left+4 
          *lpdis\rcItem\top+2 
          SetTextColor_(*lpdis\hdc, textcolor) 
          DrawText_(*lpdis\hdc, textbuffer, Len(textbuffer), *lpdis\rcItem, dtFlags) 
          ProcedureReturn 0 
      EndSelect 
    Case #WM_NOTIFY 
      *pNMHDR.NMHDR = lParam 
      tab1.TC_ITEM 
      Select *pNMHDR\code 
        Case #TCN_SELCHANGING 
          ; --> Get the index of the Tab that is about to lose focus 
          oldsel(0)=SendMessage_(*pNMHDR\hwndFrom,#TCM_GETCURSEL,0,0) 
        Case #TCN_SELCHANGE 
          ; --> Get the index of the selected Tab 
          newTab = SendMessage_(*pNMHDR\hwndFrom,#TCM_GETCURSEL,0,0) 
          tab1\Mask=#TCIF_PARAM 
          SendMessage_(*pNMHDR\hwndFrom,#TCM_GETITEM,newTab,@tab1) 
          If tab1\lParam=1 
            SendMessage_(*pNMHDR\hwndFrom,#TCM_SETCURSEL,oldsel(0),0) 
          EndIf 
          ProcedureReturn 0 
      EndSelect 
      
  EndSelect 
  ProcedureReturn CallWindowProc_(OriginProc,hwnd,msg,wParam,lParam) 
EndProcedure 
  
Procedure disablepanelitem(panel,item,State) 
  If State=1 
  itm.TC_ITEM 
  itm\Mask=#TCIF_PARAM 
  SendMessage_(GadgetID(panel),#TCM_GETITEM,item,@itm) 
  itm\lParam=1 
  itm\Mask=#TCIF_PARAM 
  SendMessage_(GadgetID(panel),#TCM_SETITEM,item,@itm) 
ElseIf State=0 
  itm.TC_ITEM 
  itm\Mask=#TCIF_PARAM 
  SendMessage_(GadgetID(panel),#TCM_GETITEM,item,@itm) 
  itm\lParam=0 
  itm\Mask=#TCIF_PARAM 
  SendMessage_(GadgetID(panel),#TCM_SETITEM,item,@itm) 
EndIf 
EndProcedure 

#WindowWidth  = 390 
#WindowHeight = 350 
If OpenWindow(0, 100, 200, #WindowWidth, #WindowHeight, #PB_Window_MinimizeGadget, "") 
  If CreateGadgetList(WindowID()) 
    PanelGadget(30,30,30,360,300) 
    SetWindowLong_(GadgetID(30),#GWL_STYLE,GetWindowLong_(GadgetID(30),#GWL_STYLE)   |#TCS_OWNERDRAWFIXED) 
    RedrawWindow_(GadgetID(30),0,0,7) 
    ShowWindow_(GadgetID(30),#SW_SHOW) 
    OriginProc=SetWindowLong_(GetParent_(GadgetID(30)),#GWL_WNDPROC,@tabproc()) 
    For a=0 To 3 
      AddGadgetItem(30,a,"test" + Str(a)) 
    Next 
    CloseGadgetList() 
  EndIf 
  
  disablepanelitem(30,2,1) 
  
  ;- event loop 
  Repeat 
    
    EventID = WaitWindowEvent() 
    
    If EventID = #PB_EventGadget 
      
      Select EventGadgetID() 
        
        
        
      EndSelect 
      
    EndIf 
    
  Until EventID = #PB_EventCloseWindow 
  
EndIf 
  
End
Répondre