PureBasic

Forums PureBasic
Nous sommes le Dim 19/Mai/2013 5:59

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 5 messages ] 
Auteur Message
 Sujet du message: Bloquer la scrollbar du bas d'une listIconGadget
MessagePosté: Mer 11/Avr/2012 13:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 19/Fév/2011 12:46
Messages: 906
salut

J'aimerai savoir s'il est possible de créer une listIconGadget en bloquant la scrollbar du bas ?

Car si je "tire" sur une colonne en haut, ça créer une scrollabar en bas et c'est moche.
On peut bloquer ça (le fait de tirer) ou empécher la scrollbar ?

Code:
#MainWindow =0

OpenWindow(#MainWindow,0,0,430,300,"Grille",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ListIconGadget(0,10,10,400,150,"Nom",175,#PB_ListIcon_GridLines)
AddGadgetColumn(0,1,"Type",100)
AddGadgetColumn(0,2,"Nombre",100)
For i = 15 To 1 Step -1
  AddGadgetItem(0,0,"Personnage"+Chr(10)+Str(i)+Chr(10)+Str(Random(10)))
Next i
 
Repeat
  event =WaitWindowEvent()
Until event = #PB_Event_CloseWindow


L'idée serait d'avoir un truc comme une listview, mais avec des colonnes à l'intérieur, sans pouvoir agir dessus :).

EDIT :

j'ai trouvé ce code de Gnozal avec une callback, ça marche nickel, mais ce n'est pas multi-plateforme, alors si vous connaissez une autre méthode n'hésitez pas ;).

Code:
Procedure WindowCallBack(Window, Message, wParam, lParam)
  ReturnValue = #PB_ProcessPureBasicEvents 
  Select Message     
    Case #WM_NOTIFY
      *NotifyMsgInfos.NMHEADER = lParam   
      If  *NotifyMsgInfos\hdr\code = #HDN_ITEMCHANGING     
          ReturnValue = #True
      EndIf
  EndSelect 
  ProcedureReturn ReturnValue
EndProcedure

If OpenWindow(0,0,0,320,300,"Colonne 2 invisible (largeur 0 + bloquée)", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)

  ListIconGadget(1,1,1,299,299,"Colonne 1", 298/4, #PB_ListIcon_MultiSelect)
  AddGadgetColumn(1, 1, "Colonne 2", 50) ; colonne 2 : largeur = 0
  AddGadgetColumn(1, 2, "Colonne 3", 298/4)
  AddGadgetColumn(1, 3, "Colonne 4", 298/4)

  For i = 1 To 10
    AddGadgetItem(1, -1, "111"+Chr(10)+ "222"+Chr(10)+"333"+Chr(10)+ "444")
  Next i
  SetWindowCallback(@WindowCallBack())

  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow

EndIf

_________________
http://blendman.blogspot.com/


Haut
 Profil  
 
 Sujet du message: Re: Bloquer la scrollbar du bas d'une listIconGadget
MessagePosté: Mer 11/Avr/2012 13:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5211
Avec ton 1er code, je n'ai pas de scrollbar bas qui apparait lorsque je brasse l'ascenseur jusqu'en bas.

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Bloquer la scrollbar du bas d'une listIconGadget
MessagePosté: Mer 11/Avr/2012 13:44 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4439
Localisation: Isere
Citation:
Avec ton 1er code, je n'ai pas de scrollbar bas qui apparait lorsque je brasse l'ascenseur jusqu'en bas.
Le mossieu y t'as dit "Quand je tire une colonne en haut" sous entendu en ecartant sur la droite.. :D
Pour une fois que je comprend quelque chose du 1er coup :mrgreen:

Citation:
mais ce n'est pas multi-plateforme
Pas facile sans les API et les callback 8O

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
 Sujet du message: Re: Bloquer la scrollbar du bas d'une listIconGadget
MessagePosté: Mer 11/Avr/2012 14:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 5211
Kwai chang caine a écrit:
Le mossieu y t'as dit "Quand je tire une colonne en haut" sous entendu en ecartant sur la droite.. :D


hulala désolé :oops: lu trop vite.

_________________
.: Ar-S :. - Windows 8 x64 - Radeon HD 7870 - PB 5.11
LDV MULTIMEDIA : Assistance informatique Isère (38) Oyeu
PURE BASIC forum non officiel : Forum PB


Haut
 Profil  
 
 Sujet du message: Re: Bloquer la scrollbar du bas d'une listIconGadget
MessagePosté: Mer 11/Avr/2012 14:45 
Hors ligne

Inscription: Mer 14/Sep/2011 16:59
Messages: 334
D'après la doc, l'événement "changer l'entete" n'est pas pris en charge, on trouve seulement ça :

Code:
Les évènements suivants sont supportés par EventType():
  #PB_EventType_LeftClick        : Clic avec le bouton gauche de la souris, ou une case à cocher a été utilisée.
  #PB_EventType_LeftDoubleClick  : Double-clic avec le bouton gauche de la souris
  #PB_EventType_RightClick       : Clic avec le bouton droit de la souris
  #PB_EventType_RightDoubleClick : Double-clic avec le bouton droit de la souris
  #PB_EventType_Change           : l'élément sélectionné a été changé
  #PB_EventType_DragStart        : L'utilisateur a essayé de lancer Une opération 'Glisser & Déposer'.


A priori, il n'y a aucun événement pour savoir si une colonne est en cours de changement de dimension ni même si elle a changé de dimension.

On peut bidouiller un timer, ç'est vraiment du bricolage mais ça marche.

Code:
#MainWindow =0

OpenWindow(#MainWindow,0,0,430,300,"Grille",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ListIconGadget(0,10,10,400,150,"Nom",175,#PB_ListIcon_GridLines)
AddGadgetColumn(0,1,"Type",100)
AddGadgetColumn(0,2,"Nombre",100)
For i = 15 To 1 Step -1
  AddGadgetItem(0,0,"Personnage"+Chr(10)+Str(i)+Chr(10)+Str(Random(10)))
Next i

AddWindowTimer(#MainWindow, 100, 100)

Repeat
  event =WaitWindowEvent()
  If Event = #PB_Event_Timer And EventTimer() = 100
    If GetGadgetItemAttribute(0, 0, #PB_ListIcon_ColumnWidth, 0) <> 175
      SetGadgetItemAttribute(0, 0, #PB_ListIcon_ColumnWidth, 175,0)
    EndIf
    If GetGadgetItemAttribute(0, 0, #PB_ListIcon_ColumnWidth, 1) <> 100
      SetGadgetItemAttribute(0, 0, #PB_ListIcon_ColumnWidth, 100,1)
    EndIf
    If GetGadgetItemAttribute(0, 0, #PB_ListIcon_ColumnWidth, 2) <> 100
      SetGadgetItemAttribute(0, 0, #PB_ListIcon_ColumnWidth, 100,2)
    EndIf
  EndIf
 
 
Until event = #PB_Event_CloseWindow
;penser à supprimer le timer


Mesa.


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 5 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Exabot [Bot], Google [Bot] et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye