Page 1 sur 2
Plusieur niveaux d'onglet
Publié : ven. 18/mars/2011 13:58
par dayvid
Salut j'ai eu une idée dernièrement
Sa ne vous est jamais arriver d'ouvrir un tas de fichier avec pure basic
par exemple un programme avec beaucoup d'include
Je me suis dit que se serais très pratique d'avoir plusieurs niveaux
d'onglet d'affichage de fichier si vous me suivez
car toujours cliquer sur les flèche pour aller a un fichier et revenir au premier etc.
c'est très Chian
Suis-je asse clair ?

Re: Plusieur niveaux d'onglet
Publié : sam. 19/mars/2011 12:26
par stombretrooper
Je vois l'idée est c'est loin d'être une mauvaise idée, en gros tu voudrais que dans un onglet on puisse ouvrir d'autre onglet comme sa en 2 clics on pourrait accéder à tout les fichiers sur lequels on travaille (un clic sur l'onglet parent/un clic sur l'onglet du fichier qui nous intéresse).
Re: Plusieur niveaux d'onglet
Publié : sam. 19/mars/2011 12:47
par venom
un peut comme ça :
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
PanelGadget (0, 8, 8, 306, 203)
AddGadgetItem (0, -1, "projet 1")
PanelGadget (1, 5, 5, 290, 166)
AddGadgetItem(1, -1, "Sous-onglet 1")
AddGadgetItem(1, -1, "Sous-onglet 2")
AddGadgetItem(1, -1, "Sous-onglet 3")
CloseGadgetList()
AddGadgetItem (0, -1,"projet 2")
PanelGadget (2, 5, 5, 290, 166)
AddGadgetItem(2, -1, "Sous-onglet 1")
AddGadgetItem(2, -1, "Sous-onglet 2")
AddGadgetItem(2, -1, "Sous-onglet 3")
CloseGadgetList()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
@++
Re: Plusieur niveaux d'onglet
Publié : sam. 19/mars/2011 13:26
par Chris
Je ne suis pas sur qu'il parle de sous-onglets contenus dans des onglets parents, et encore moins de la façon de les programmer.
Sa ne vous est jamais arriver d'ouvrir un tas de fichier avec pure basic
par exemple un programme avec beaucoup d'include
A mon avis, il parle d'ouvrir plusieurs fichiers dans l'éditeur, et que quand la longueur des onglets dépasse la longueur de la page, ça mette les onglets suivants sur une deuxième ligne plutôt que d'afficher une flèche qui les fait défiler horizontalement.
Re: Plusieur niveaux d'onglet
Publié : sam. 19/mars/2011 14:11
par venom
oui j'avais compris comme toi Chris,
j'ai simplement montrée l'exemple de PB qui se rapproche le plus
@++
Re: Plusieur niveaux d'onglet
Publié : sam. 19/mars/2011 15:41
par Guimauve
Bonjour à tous,
Je pense que Dayvid veut dire c'est un effet sur un PanelGadget qui peut être obtenu avec une procédure du genre :
Code : Tout sélectionner
Procedure SetPanelGadgetToMultiRows(GadgetID)
OldStyle = GetWindowLongPtr_(GadgetID(GadgetID), #GWL_STYLE)
NewStyle = OldStyle | #TCS_MULTILINE | #TCS_RIGHTJUSTIFY
SetWindowLongPtr_(GadgetID(GadgetID), #GWL_STYLE, NewStyle)
SetGadgetState(GadgetID, 0)
EndProcedure
Je n'ai plus Windows depuis plus d'un an maintenant et je ne peux pas fournir de code de démonstration. Le code en question ne fonctionne que sous Windows.
Mais selon l'avis des grands programmeurs d'interface graphique, l'affichage des onglets d'un PanelGadget sur plusieurs lignes est une très mauvaise pratique. Tellement, qu'un programmeur qui fait ça mériterait d'être lapidé sur la place publique pour une telle aberration. Selon moi c'est discutable...
Pour ce qui est de l'IDE il m'arrive tout le temps d'avoir plusieurs fichiers d'ouvert en même temps et lorsque les flèches de défilement apparaissent alors je ferme un des fichiers ouvert pour ne pas à me prendre la tête.
A+
Guimauve
Re: Plusieur niveaux d'onglet
Publié : sam. 19/mars/2011 15:49
par venom

sympa cette procédure Guimauve,
je met ça de coté au cas ou
@++
Re: Plusieur niveaux d'onglet
Publié : mer. 23/mars/2011 13:36
par dayvid
Salut !
Oui voilà c'est exactement ceci que je voudrais proposer
ce serais vraiment très utile
plusieurs sous ongle enfin comme as dit Chris quoi
enfin autant de sous ongle et re-sous onglet etc. qu'il faut pour tous les fichier

Re: Plusieur niveaux d'onglet
Publié : ven. 25/mars/2011 15:08
par dayvid
Hé Guimauve, super ton code
bin voilà je ne sais pas la différence mais c'est sa quoi

Re: Plusieur niveaux d'onglet
Publié : ven. 25/mars/2011 17:44
par Kwai chang caine
dayvid a écrit :Hé Guimauve, super ton code
bin voilà je ne sais pas la différence mais c'est sa quoi

C'est pas pour l'IDE de PB, mais on peut deja le faire pour nos onglets à nous
Merci GUIMAUVE
Code : Tout sélectionner
Procedure SetPanelGadgetToMultiRows(GadgetID)
OldStyle = GetWindowLongPtr_(GadgetID(GadgetID), #GWL_STYLE)
NewStyle = OldStyle | #TCS_MULTILINE | #TCS_RIGHTJUSTIFY
SetWindowLongPtr_(GadgetID(GadgetID), #GWL_STYLE, NewStyle)
SetGadgetState(GadgetID, 0)
EndProcedure
If OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
PanelGadget (0, 8, 8, 306, 203)
;SetPanelGadgetToMultiRows(0) ; Tu décommentes cette ligne pour avoir ce que tu veux
AddGadgetItem (0, -1, "Onglet 1")
PanelGadget (1, 5, 5, 290, 166)
AddGadgetItem(1, -1, "Sous-onglet 1")
AddGadgetItem(1, -1, "Sous-onglet 2")
AddGadgetItem(1, -1, "Sous-onglet 3")
CloseGadgetList()
AddGadgetItem (0, -1,"Onglet 2")
ButtonGadget(2, 10, 15, 80, 24,"Bouton 1")
ButtonGadget(3, 95, 15, 80, 24,"Bouton 2")
AddGadgetItem (0, -1,"Onglet 3")
AddGadgetItem (0, -1,"Onglet 4")
AddGadgetItem (0, -1,"Onglet 5")
AddGadgetItem (0, -1,"Onglet 6")
CloseGadgetList()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: Plusieur niveaux d'onglet
Publié : lun. 18/avr./2011 20:10
par blendman
salut, je confirme que l'idée de Chris (l'exemple) serait très appréciable

.
Il m'arrive souvent d'ouvert 2 ou 3 projets en mêmes (comprendre plusieurs fichiers liés) et ce serait vraiment bien de pouvoir les grouper

.
Re: Plusieur niveaux d'onglet
Publié : lun. 18/avr./2011 21:03
par Chris
blendman a écrit :salut, je confirme que l'idée de Chris (l'exemple) serait très appréciable

.
Il m'arrive souvent d'ouvert 2 ou 3 projets en mêmes (comprendre plusieurs fichiers liés) et ce serait vraiment bien de pouvoir les grouper

.
Je suis bien content que ça te plaise.
D'autant plus que je n'ai posté aucun exemple dans ce topic.

Re: Plusieur niveaux d'onglet
Publié : mar. 19/avr./2011 9:16
par blendman
Chris a écrit :Je suis bien content que ça te plaise.
D'autant plus que je n'ai posté aucun exemple dans ce topic.

ah ben oui, oup's

C'est parce que tu m'as aidé sur les preference encryptées récemment, c'était l'exemple de venom qui serait intéressant d'avoir comme options dans l'IDE

.
Re: Plusieur niveaux d'onglet
Publié : mar. 19/avr./2011 13:26
par pat
Bonjour à tous,
Pour répondre à Guimauve, que je remercie particulièrement pour son code très apprécié de tout le monde.
Son exemple de code est concis, clair et va à l'essentiel. Tout ce que j'apprécie particulièrement.
J'ai acheté, il y a quelques temps, un logiciel qui avait dans son contenu un panel à onglets multiples et donc je ne pense pas que cela soit quelque chose de répréhensible.
Les textes des titres des onglets sont obligatoirement centrés et donc :
NewStyle = OldStyle | #TCS_MULTILINE
suffit largement.
Pour ceux qui n'aiment pas la présentation en onglet, je propose quelques petits changements :
NewStyle = OldStyle | #TCS_MULTILINE | #TCS_BUTTONS | #TCS_HOTTRACK
Vous aurez à la place des onglets des "Radio-boutons" et le #TCS_HOTTRACK (pour ceux qui le souhaitent) pour que le texte du bouton soit en couleur quand on sélectionne le bouton.
Maintenant je n'ai pas trouvé comment mettre de la couleur dans le panel car rien ne semble fonctionner.
Peut-être dans la version 4.60 (je la téléchargerai quand on en sera effectivement à la version 4.60 et non aux versions intermédiaires).
Re: Plusieur niveaux d'onglet
Publié : mar. 19/avr./2011 20:23
par Guimauve
Bonjour à tous,
Je ne suis plus sûr mais je pense que le code pour forcer le PanelGadget() à afficher les onglets sur deux lignes provient d'un code donné par "Le Soldat Inconnu" en 2003 ou en 2004 je ne sais plus trop en fait. Donc le mérite pour ce morceau de code ne me revient pas, désolé !
[EDIT]
Après une petite recherche, c'est ici :
http://www.purebasic.fr/french/viewtopi ... t=58&p=182
J'avais simplement modifier le code pour qu'il soit limité à faire une seule chose.
[/EDIT]
A+
Guimauve