Peut-être que certains vont trouver ça inutile, mais je poste le code des abréviations de constantes que j'inclus presque tout le temps maintenant dans mes programmes.
L'avantage, ben c'est juste un peu moins de temps perdu à écrire et à lire son prog.
Normalement, ça prend rien dans l'EXE. Donc pas d'inconvénient. J'espère ne pas plaggier un post ou code déjà écrit à ce sujet, sinon n'hésitez pas à me le faire savoir. Si ce n'est pas le cas, je remettrais à jour ce post à jour quand je ferai des rajouts dans mon fichier pbi.
(Shorts.PBI)
Code : Tout sélectionner
#Any = #PB_Any
;- OPTIONS WINDOW
#WMenu = #PB_Window_SystemMenu
; Autorise le menu système sur la barre de titre.
#WMini = #PB_Window_MinimizeGadget
; Ajoute l'icône 'Réduire' sur la barre de titre. #PB_Window_SystemMenu est ajouté automatiquement.
#WMaxi = #PB_Window_MaximizeGadget
; Ajoute l'icône 'Agrandir' sur la barre de titre. #PB_Window_SystemMenu est ajouté automatiquement.
#WRedim = #PB_Window_SizeGadget
; Ajoute les possibilités de redimensionnement à la fenêtre.
#WInvis = #PB_Window_Invisible
; Crée la fenêtre mais ne l'affiche pas. Non supporté sur AmigaOS.
#WTitle = #PB_Window_TitleBar
; Crée la fenêtre avec une barre de titre.
#WBorderLess = #PB_Window_BorderLess
; Crée une fenêtre sans bordure.
#WScrCtr = #PB_Window_ScreenCentered
; Centre la fenêtre au milieu de l'écran. Les paramètres x,y sont ignorés.
#WWinCtr = #PB_Window_WindowCentered
; Centre la fenêtre au milieu de la fenêtre mère ('FenetreMereID' doit être spécifié). Les paramètres x,y sont ignorés.
#WMaximize = #PB_Window_Maximize
; Ouvre la fenêtre en mode maximisé. (Note: sous Linux, certains gestionnaires de fenêtres ne supportent pas cela)
#WMinimize = #PB_Window_Minimize
; Ouvre la fenêtre en mode minimisé.
;- RETOUR EVENEMENT
#EvMenu = #PB_Event_Menu
; Un menu a été sélectionné
#EvGadget = #PB_Event_Gadget
; Un gadget a été cliqué
#EvSysTray = #PB_Event_SysTray
; Une icône dans la zone SysTray a été cliquée
#EvCloseWin = #PB_Event_CloseWindow
; L'icône de fermeture de fenêtre a été cliquée
#EvRepaint = #PB_Event_Repaint
; Tout ou partie du contenu de la fenêtre a été détruit et doit être reconstitué (Utile pour les applications en graphique 2D)
#EvMoveWin = #PB_Event_MoveWindow
; La fenêtre a été déplacée
#EvSizeWin = #PB_Event_SizeWindow
; La fenêtre a été redimensionnée
#EvActiveWin = #PB_Event_ActivateWindow
; La fenêtre a été activée (gain du focus)
#EvWinDrop = #PB_Event_WindowDrop
; Une opération 'Glisser & Déposer' s'est terminée sur une fenêtre
#EvGadgetDrop = #PB_Event_GadgetDrop
; Une opération 'Glisser & Déposer' s'est terminée sur un gadget
;- REQUETE MESSAGE
#MessReqYesNo = #PB_MessageRequester_YesNo
; Pour afficher les boutons 'Oui' et 'Non'
#MessReqYesNoCancel = #PB_MessageRequester_YesNoCancel
; Pour afficher les boutons 'Oui', 'Non' et 'Annuler'
#MessReqOk = #PB_MessageRequester_Ok
; Pour afficher seulement le bouton 'OK'
;(RETOUR)
#MessReqYes = #PB_MessageRequester_Yes
; Le bouton 'Oui' a été pressé
#MessReqNo = #PB_MessageRequester_No
; Le bouton 'Non' a été pressé
#MessReqCancel = #PB_MessageRequester_Cancel
; Le bouton 'Annuler' a été pressé
;- OPTIONS LIST-ICON GADGET
#LI_CheckBox = #PB_ListIcon_CheckBoxes
; Affiche une Case à cocher dans la première colonne.
#LI_MultiSelect = #PB_ListIcon_MultiSelect
; Active le mode 'sélection multiple'.
#LI_Grid = #PB_ListIcon_GridLines
; Affiche des lignes de séparation.
#LI_FullLine = #PB_ListIcon_FullRowSelect
; La sélection s'étend à toute la ligne au lieu de la première colonne.
#LI_DragDrop = #PB_ListIcon_HeaderDragDrop
; L'ordre des colonnes peut être changé avec un glisser/déposer (drag'n'drop).
#LI_EverSelect = #PB_ListIcon_AlwaysShowSelection
; Affiche la selection même quand le gadget n'est plus actif.
;- TYPES DE GADGET
#GT_Button = #PB_GadgetType_Button ; ButtonGadget()
#GT_ButtonImage = #PB_GadgetType_ButtonImage ; ButtonImageGadget()
#GT_Calendar = #PB_GadgetType_Calendar ; CalendarGadget()
#GT_CheckBox = #PB_GadgetType_CheckBox ; CheckBoxGadget()
#GT_ComboBox = #PB_GadgetType_ComboBox ; ComboBoxGadget()
#GT_Container = #PB_GadgetType_Container ; ContainerGadget()
#GT_Date = #PB_GadgetType_Date ; DateGadget()
#GT_Editor = #PB_GadgetType_Editor ; EditorGadget()
#GT_ExplorerCombo = #PB_GadgetType_ExplorerCombo ; ExplorerComboGadget()
#GT_ExplorerList = #PB_GadgetType_ExplorerList ; ExplorerListGadget()
#GT_ExplorerTree = #PB_GadgetType_ExplorerTree ; ExplorerTreeGadget()
#GT_Frame3D = #PB_GadgetType_Frame3D ; Frame3DGadget()
#GT_HyperLink = #PB_GadgetType_HyperLink ; HyperLinkGadget()
#GT_Image = #PB_GadgetType_Image ; ImageGadget()
#GT_IPAddress = #PB_GadgetType_IPAddress ; IPAddressGadget()
#GT_ListIcon = #PB_GadgetType_ListIcon ; ListIconGadget()
#GT_ListView = #PB_GadgetType_ListView ; ListViewGadget()
#GT_MDI = #PB_GadgetType_MDI ; MDIGadget()
#GT_Option = #PB_GadgetType_Option ; OptionGadget()
#GT_Panel = #PB_GadgetType_Panel ; PanelGadget()
#GT_ProgressBar = #PB_GadgetType_ProgressBar ; ProgressBarGadget()
;#GT_Scintilla = #PB_GadgetType_Scintilla ; ScintillaGadget()
#GT_ScrollArea = #PB_GadgetType_ScrollArea ; ScrollAreaGadget()
#GT_ScrollBar = #PB_GadgetType_ScrollBar ; ScrollBarGadget()
#GT_Spin = #PB_GadgetType_Spin ; SpinGadget()
#GT_Splitter = #PB_GadgetType_Splitter ; SplitterGadget()
#GT_String = #PB_GadgetType_String ; StringGadget()
#GT_Text = #PB_GadgetType_Text ; TextGadget()
#GT_TrackBar = #PB_GadgetType_TrackBar ; TrackBarGadget()
#GT_Tree = #PB_GadgetType_Tree ; TreeGadget()
#GT_Web = #PB_GadgetType_Web ; WebGadget()
#GT_Unknown = #PB_GadgetType_Unknown ; Type inconnu, problablement pas un gadget PureBasic.
;- ICONES DE LA BARRE D'OUTIL
#TBI_New = #PB_ToolBarIcon_New ;(Nouveau fichier)
#TBI_Open = #PB_ToolBarIcon_Open ;(Ouvre Fichier)
#TBI_Save = #PB_ToolBarIcon_Save ;(Enregistre Fichier)
#TBI_Print = #PB_ToolBarIcon_Print ;(Imprime)
#TBI_PrintPreview = #PB_ToolBarIcon_PrintPreview ;(Aperçu avant impression)
#TBI_Find = #PB_ToolBarIcon_Find ;(Cherche une occurence)
#TBI_Replace = #PB_ToolBarIcon_Replace ;(Remplace une occurence)
#TBI_Cut = #PB_ToolBarIcon_Cut ;(Couper)
#TBI_Copy = #PB_ToolBarIcon_Copy ;(Copier)
#TBI_Paste = #PB_ToolBarIcon_Paste ;(Coller)
#TBI_Undo = #PB_ToolBarIcon_Undo ;(Annule l'action)
#TBI_Redo = #PB_ToolBarIcon_Redo ;(Repète l'action)
#TBI_Delete = #PB_ToolBarIcon_Delete ;(Efface)
#TBI_Properties = #PB_ToolBarIcon_Properties ;(Propriétés)
#TBI_Help = #PB_ToolBarIcon_Help ;(Aide)
;- OPTIONS POLICE
#FBold = #PB_Font_Bold ; La police de caractère sera en gras
#FItalic = #PB_Font_Italic ; La police de caractère sera en italique
#FUnderline = #PB_Font_Underline ; La police de caractère sera soulignée
#FStrikeOut = #PB_Font_StrikeOut ; La police de caractère sera barrée
#FHighQuality = #PB_Font_HighQuality ; La police de caractère sera en qualité supérieure (plus lent)
;- RETOUR CLAVIER
#KeyAll = #PB_Key_All ; Toutes les touches sont testées.
#Key1 = #PB_Key_1
#Key2 = #PB_Key_2
#Key3 = #PB_Key_3
#Key4 = #PB_Key_4
#Key5 = #PB_Key_5
#Key6 = #PB_Key_6
#Key7 = #PB_Key_7
#Key8 = #PB_Key_8
#Key9 = #PB_Key_9
#Key0 = #PB_Key_0
#KeyA = #PB_Key_A
#KeyB = #PB_Key_B
#KeyC = #PB_Key_C
#KeyD = #PB_Key_D
#KeyE = #PB_Key_E
#KeyF = #PB_Key_F
#KeyG = #PB_Key_G
#KeyH = #PB_Key_H
#KeyI = #PB_Key_I
#KeyJ = #PB_Key_J
#KeyK = #PB_Key_K
#KeyL = #PB_Key_L
#KeyM = #PB_Key_M
#KeyN = #PB_Key_N
#KeyO = #PB_Key_O
#KeyP = #PB_Key_P
#KeyQ = #PB_Key_Q
#KeyR = #PB_Key_R
#KeyS = #PB_Key_S
#KeyT = #PB_Key_T
#KeyU = #PB_Key_U
#KeyV = #PB_Key_V
#KeyW = #PB_Key_W
#KeyX = #PB_Key_X
#KeyY = #PB_Key_Y
#KeyZ = #PB_Key_Z
#KeyEscape = #PB_Key_Escape
#KeyMinus = #PB_Key_Minus
#KeyEquals = #PB_Key_Equals
#KeyBack = #PB_Key_Back
#KeyTab = #PB_Key_Tab
#KeyLeftBracket = #PB_Key_LeftBracket
#KeyRightBracket = #PB_Key_RightBracket
#KeyReturn = #PB_Key_Return
#KeyLeftControl = #PB_Key_LeftControl
#KeySemiColon = #PB_Key_SemiColon
#KeyApostrophe = #PB_Key_Apostrophe
#KeyGrave = #PB_Key_Grave
#KeyLeftShift = #PB_Key_LeftShift
#KeyBackSlash = #PB_Key_BackSlash
#KeyComma = #PB_Key_Comma
#KeyPeriod = #PB_Key_Period
#KeySlash = #PB_Key_Slash
#KeyRightShift = #PB_Key_RightShift
#KeyMultiply = #PB_Key_Multiply
#KeyLeftAlt = #PB_Key_LeftAlt
#KeySpace = #PB_Key_Space
#KeyCapital = #PB_Key_Capital
#KeyF1 = #PB_Key_F1
#KeyF2 = #PB_Key_F2
#KeyF3 = #PB_Key_F3
#KeyF4 = #PB_Key_F4
#KeyF5 = #PB_Key_F5
#KeyF6 = #PB_Key_F6
#KeyF7 = #PB_Key_F7
#KeyF8 = #PB_Key_F8
#KeyF9 = #PB_Key_F9
#KeyF10 = #PB_Key_F10
#KeyF11 = #PB_Key_F11
#KeyF12 = #PB_Key_F12
#KeyNumLock = #PB_Key_NumLock
#KeyScroll = #PB_Key_Scroll
#KeyPad0 = #PB_Key_Pad0
#KeyPad1 = #PB_Key_Pad1
#KeyPad2 = #PB_Key_Pad2
#KeyPad3 = #PB_Key_Pad3
#KeyPad4 = #PB_Key_Pad4
#KeyPad5 = #PB_Key_Pad5
#KeyPad6 = #PB_Key_Pad6
#KeyPad7 = #PB_Key_Pad7
#KeyPad8 = #PB_Key_Pad8
#KeyPad9 = #PB_Key_Pad9
#KeyAdd = #PB_Key_Add
#KeySubtract = #PB_Key_Subtract
#KeyDecimal = #PB_Key_Decimal
#KeyPadEnter = #PB_Key_PadEnter
#KeyRightControl = #PB_Key_RightControl
#KeyPadComma = #PB_Key_PadComma
#KeyDivide = #PB_Key_Divide
#KeyRightAlt = #PB_Key_RightAlt
#KeyPause = #PB_Key_Pause
#KeyHome = #PB_Key_Home
#KeyUp = #PB_Key_Up
#KeyDown = #PB_Key_Down
#KeyLeft = #PB_Key_Left
#KeyRight = #PB_Key_Right
#KeyEnd = #PB_Key_End
#KeyPageUp = #PB_Key_PageUp
#KeyPageDown = #PB_Key_PageDown
#KeyInsert = #PB_Key_Insert
#KeyDelete = #PB_Key_Delete
Taille des fenêtres modifiables : ListIconGadget redimensionné automatiquement
Code : Tout sélectionner
XIncludeFile "Shorts.pbi"
;- -------------------------------
;- Structure des corps
Structure Cp
Win.l ; Numéro de la fenêtre
Gdg.l ; Numéro du gadget
GdgFlag.l ; Drapeaux d'état du gadget
EndStructure
Global NewList Dt.Cp()
;- -------------------------------
;- -------------------------------
;- Paramètre système
Global Breaking
;- -------------------------------
;- -------------------------------
;- Paramètre Fenêtre système
Global WinSys0
Global GdgSys0
;- -------------------------------
Declare IniSystem()
Declare EventSystem()
Declare CreateTable()
Declare.l GWinPos()
Declare SearchWin(n)
Procedure IniSystem()
WinSys0 = OpenWindow(#Any, 10, 10, 200, 100, "Base de données")
CreateGadgetList(WindowID(WinSys0) )
GdgSys0 = ButtonGadget(#Any, 0, 0, 200, 30, "Nouvelle fenêtre")
EndProcedure
Procedure EventSystem()
Repeat
Result = WaitWindowEvent()
Win = EventWindow()
Gdg = 0
If Result = #EvGadget
Gdg = EventGadget()
EndIf
If Win = WinSys0
If Gdg = GdgSys0
CreateTable()
EndIf
EndIf
If Result = #PB_Event_CloseWindow
If Win = WinSys0
Breaking = 1
Else
CloseWindow(Win)
EndIf
EndIf
If Result = #PB_Event_SizeWindow
If Win <> WinSys0
dx = WindowWidth(Win)
dy = WindowHeight(Win)
If SearchWin(Win)
CreateGadgetList(WindowID(Win) )
Dt()\Gdg = ListIconGadget(#Any, 0, 0, dx, dy, "", 0, #LI_Grid|#LI_FullLine|#LI_DragDrop)
EndIf
EndIf
EndIf
Until Breaking = 1
EndProcedure
Procedure CreateTable()
AddElement(Dt() )
Pos = GWinPos()
Dt()\Win = OpenWindow(#Any, 200 + Pos, Pos, 200, 100, "Fenêtre "+Str(29), #WMenu|#WRedim|#WMini|#WMaxi)
If CreateGadgetList(WindowID(Dt()\Win) ) = 0
EndIf
EndProcedure
Procedure.l GWinPos()
;Génère une position correcte pour les nouvelles fenêtres
Static x
x + 32
If x > 255
x = 0
EndIf
ProcedureReturn x
EndProcedure
Procedure SearchWin(n)
Reste = -1
If CountList(Dt() ) > 0
*Ancien_Element = @Dt() ; On mémorise l'adresse de l'élément courant
ResetList(Dt()) ; Effectue une recherche de tous les éléments nommés
While NextElement(Dt()) And Reste
If Dt()\Win = n
Reste = 0
EndIf
Wend
ChangeCurrentElement(Dt(), *Ancien_Element) ; Restitue l'ancien élément courant (mémorisé avant la recherche)
EndIf
ProcedureReturn (-1-Reste)
EndProcedure
Global Dim Opt(15)
Global Dim Itm$(15, 99)
IniSystem()
EventSystem()
End
Code : Tout sélectionner
#Gad_Tree = 0
#Menu_TreeEdit = 0
#ItemIns_Enfant = 0
#ItemIns_Frere = 1
#ItemSuppr = 2
#ItemProper = 3
If OpenWindow(0, 0, 0, 355, 180, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0) )
TreeGadget(#Gad_Tree, 10, 10, 340, 160)
AddGadgetItem(#Gad_Tree, 0, "Root", 0, 0)
;Boucle principale
CreatePopupMenu(#Menu_TreeEdit)
OpenSubMenu("Ajouter")
MenuItem(#ItemIns_Enfant, "Enfant")
MenuItem(#ItemIns_Frere, "Frere")
CloseSubMenu()
MenuItem(#ItemSuppr, "Enlever")
MenuItem(#ItemProper, "Propriétés")
Else
End
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #WM_RBUTTONDOWN
DisplayPopupMenu(0,WindowID(0))
Case #PB_Event_Menu
Select EventMenu()
Case #ItemIns_Enfant
; On vérif qu'il y a une sélection /!\ Important : Merci Flype :)
If GetGadgetState(#Gad_Tree) <> -1
; On récup la sélection
Item = GetGadgetState(#Gad_Tree)
; On récup alors le niveau de la sélection
ItemNiveau = GetGadgetItemAttribute(#Gad_Tree, Item, #PB_Tree_SubLevel)
; On mémorise le total: à 2 fois ça servira
ExitFor = CountGadgetItems(#Gad_Tree)
; On va rechercher l'enfant cadet
For i = Item + 1 To ExitFor
TestNiveau = GetGadgetItemAttribute(#Gad_Tree, i, #PB_Tree_SubLevel)
; Dès qu'on trouve un frère, un tonton ou autre...
If TestNiveau <= ItemNiveau
; On signale que le cadet était juste avant
Item = i - 1
; Et on arrête de chercher
i = ExitFor
EndIf
Next i
; On rajoute le bébé!
AddGadgetItem(#Gad_Tree, Item + 1, "Root"+ Str(n), 0, ItemNiveau + 1)
; Et on ouvre la famille
SetGadgetItemState(#Gad_Tree, Item, #PB_Tree_Expanded)
n + 1 ; ça ça sert pas à grand chose, juste pour écrire "Root n"
EndIf
Case #ItemIns_Frere
; On vérif qu'il y a une sélection
If GetGadgetState(#Gad_Tree) <> -1
; On récup la sélection
Item = GetGadgetState(#Gad_Tree)
; On récup alors le niveau de la sélection
ItemNiveau = GetGadgetItemAttribute(#Gad_Tree, Item, #PB_Tree_SubLevel)
; On mémorise le total: à 2 fois ça servira
ExitFor = CountGadgetItems(#Gad_Tree)
; On va rechercher le dernier des descendants, neveux compris
For i = Item + 1 To ExitFor
TestNiveau = GetGadgetItemAttribute(#Gad_Tree, i, #PB_Tree_SubLevel)
;Si c'est un frère, un fils, un neveu...
If TestNiveau => ItemNiveau
; On le mémorise au cas où ce soit le dernier
Item = i
EndIf
;Si c'est un tonton ou autre parent germain, recherche achevée
If TestNiveau < ItemNiveau
i = ExitFor
EndIf
Next i
; On insère le nouveau frère cadet
AddGadgetItem(#Gad_Tree, Item + 1, "Root"+Str(n), 0, ItemNiveau)
n + 1 ; ça ça sert pas à grand chose, juste pour écrire "Root n"
EndIf
Case #ItemSuppr
If GetGadgetState(#Gad_Tree) <> -1
; On récup la sélection
Item = GetGadgetState(#Gad_Tree)
; On lui pete la gueule
RemoveGadgetItem(#Gad_Tree, Item)
n + 1 ; ça ça sert pas à grand chose, juste pour écrire "Root n"
EndIf
Case #ItemProper
MessageRequester("Heplà...", "A 4h du mat, faut pô me demander la lune!", 0)
EndSelect
EndSelect
ForEver