Voici le code en question, il y a beaucoup de gagdet et le rafraichissement de la fenêtre en prend un coup quand on passe du mode fenêtre pleine écran à fenêtre normal (le petit bouton a coté de la croix pour fermer la fenêtre dans la barre de titre )
En gros, ce me laisse des bout de dessin de gadget un peu partout sur la fenêtre
voici le code :
J'ai regarder si par hazard, je n'avais pas fait de bétise avec les numéros de gagdet mais non, j'ai tout mis dans une Enumeration ou par des #PB_Any
PB 4.10 installé
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication pour le programme :
; Ecriture sous forme HTML d'un caractère : ł
Enumeration 1
#MDI
#MDI_Categorie
#MDI_Categorie_Liste
#MDI_Categorie_Ajouter
#MDI_Categorie_Renommer
#MDI_Categorie_Supprimer
#MDI_Categorie_Monter
#MDI_Categorie_Descendre
#MDI_Titre
#MDI_Titre_Liste
#MDI_Titre_Ajouter
#MDI_Titre_Renommer
#MDI_Titre_Supprimer
#MDI_Titre_Monter
#MDI_Titre_Descendre
#Dictionnaire_Nom
#Dictionnaire_Liste
#Categorie_Nom
#Recherche_Nom
#Recherche_Texte
#Recherche_Categories
#Recherche_Titres
#Recherche_Lancer
#Recherche_Defaut
#Resultat_Nom
#Resultat_Liste
#Menu_Organiser_Cascade
#Menu_Organiser_Horizontal
#Menu_Organiser_Vertical
#Menu_Edition_Categorie
#Menu_Edition_Titre
#Menu_Edition_Definition_Ajouter
#Menu_Edition_Definition_Editer
#Menu_Option_Langue
#Menu_Clavier = 100
#Menu_MDI = 200
#Categorie_Ligne_H = 300
#Recherche_Ligne_H = 320
#Separation_Ligne_V = 340
EndEnumeration
Global Dictionnaire.s, Organisation.l
#Espace_V = 10
#Espace_H = 5
#Espace_Ligne = 4
#Clavier_Nom = 25
#Clavier_Nom_H = 16
#Clavier_Bouton = 22
#Clavier_Bouton_Maj = 25
#Clavier_Espace = 5
#Clavier_NbLettre = 100
Structure Clavier_Info
Nom.s
Maj.l
Nom_ID.l
Menu_ID.l
Maj_ID.l
Active.l
Touche_ID.l[#Clavier_NbLettre]
Touche_Min.c[#Clavier_NbLettre]
Touche_Maj.c[#Clavier_NbLettre]
EndStructure
Global NewList Clavier.Clavier_Info()
#Categorie_Largeur = 150
#Categorie_Nb = 20
#Categorie_Texte_H = 16
Structure Categorie_Info
Nom.s
Ordre.l
Recherche.l
Nom_ID.l
Liste_ID.l
EndStructure
Global Dim Categorie.Categorie_Info(#Categorie_Nb)
#Texte_Nb = 20
Structure Titre_Info
Nom.s
Ordre.l
Recherche.l
EndStructure
Global Dim Titre.Titre_Info(#Texte_Nb)
Structure Definition_Info
id.l
Categorie.l[#Categorie_Nb]
Texte.s[#Texte_Nb]
Texte_ID.l[#Texte_Nb]
EndStructure
Global NewList Definition.Titre_Info()
Structure Page_Info
Win_ID.l
WebG_ID.l
Definition_ID.l
EndStructure
#Recherche_Largeur = 150
#Recherche_Texte_H = 16
Declare Sauver()
Procedure Gestion_Organisation(Type = 0)
Organisation = Type
If Organisation = #PB_MDI_Cascade
SetMenuItemState(0, #Menu_Organiser_Cascade, 1)
Else
SetMenuItemState(0, #Menu_Organiser_Cascade, 0)
EndIf
If Organisation = #PB_MDI_TileHorizontally
SetMenuItemState(0, #Menu_Organiser_Horizontal, 1)
Else
SetMenuItemState(0, #Menu_Organiser_Horizontal, 0)
EndIf
If Organisation = #PB_MDI_TileVertically
SetMenuItemState(0, #Menu_Organiser_Vertical, 1)
Else
SetMenuItemState(0, #Menu_Organiser_Vertical, 0)
EndIf
EndProcedure
Procedure Charger_Clavier()
; If ExamineDirectory(0, "Clavier\", "*.clv")
; While NextDirectoryEntry(0)
; FileType = DirectoryEntryType(0)
;
; If FileType = #PB_DirectoryEntry_File
; Fichier.s = DirectoryEntryName(0)
;
; If ReadFile(0, "Clavier\" + Fichier)
; AddElement(Clavier())
; Clavier()\Nom = StringField(Fichier, 1, ".")
; n = -1
; Maj = 0
; Repeat
; n + 1
; Caractere.c = ReadCharacter(0)
; If Caractere = 0
; Maj + 1
; n = -1
; Else
; If Maj
; Clavier()\Touche_Maj[n] = Caractere
; Else
; Clavier()\Touche_Min[n] = Caractere
; EndIf
; EndIf
; Until Eof(0)
;
; CloseFile(0)
; EndIf
;
; EndIf
;
; Wend
AddElement(Clavier())
Clavier()\Nom = "FR 1"
Clavier()\Active = 1
n = -1
For Caractere = 97 To 122
n + 1
Clavier()\Touche_Maj[n] = Caractere
Clavier()\Touche_Min[n] = Caractere
Next
AddElement(Clavier())
Clavier()\Nom = "FR 2"
Clavier()\Active = 1
n = -1
For Caractere = 97 To 122
n + 1
Clavier()\Touche_Maj[n] = Caractere
Clavier()\Touche_Min[n] = Caractere
Next
SortStructuredList(Clavier(), 2, OffsetOf(Clavier_Info\Nom), #PB_Sort_String)
n = #Menu_Clavier
ForEach Clavier()
Clavier()\Menu_ID = n
n + 1
Next
; EndIf
EndProcedure
Procedure Clavier_Majuscule()
If Clavier()\Maj
For n = 0 To #Clavier_NbLettre - 1
If Clavier()\Touche_Maj[n]
SetGadgetText(Clavier()\Touche_ID[n], Chr(Clavier()\Touche_Maj[n]))
EndIf
Next
Else
For n = 0 To #Clavier_NbLettre - 1
If Clavier()\Touche_Min[n]
SetGadgetText(Clavier()\Touche_ID[n], Chr(Clavier()\Touche_Min[n]))
EndIf
Next
EndIf
EndProcedure
Procedure Clavier_Creation()
If Clavier()\Active
Clavier()\Nom_ID = TextGadget(#PB_Any, 0, 0, #Clavier_Nom, #Clavier_Nom_H, Clavier()\Nom)
SetGadgetFont(Clavier()\Nom_ID, FontID(1))
Clavier()\Maj_ID = ButtonGadget(#PB_Any, 0, 0, #Clavier_Bouton_Maj, #Clavier_Bouton, "aA", #PB_Button_Toggle)
For n = 0 To #Clavier_NbLettre - 1
If Clavier()\Touche_Min[n]
Clavier()\Touche_ID[n] = ButtonGadget(#PB_Any, 0, 0, #Clavier_Bouton, #Clavier_Bouton, "")
Else
Break
EndIf
Next
Clavier_Majuscule() ; Laissez à la fin
Else
FreeGadget(Clavier()\Nom_ID)
FreeGadget(Clavier()\Maj_ID)
For n = 0 To #Clavier_NbLettre - 1
If Clavier()\Touche_ID[n]
FreeGadget(Clavier()\Touche_ID[n])
Clavier()\Touche_ID[n] = 0
EndIf
Next
EndIf
EndProcedure
Declare Fenetre_Dimension(Zone = -1)
Procedure Fenetre_Edition_Categorie()
If IsWindow(#MDI_Categorie) = 0
AddGadgetItem(#MDI, #MDI_Categorie, "Editer les catégories")
#MDI_Categorie_Texte_H = 32
If Organisation <> 0
SetGadgetState(#MDI, Organisation)
While WindowEvent() : Wend
EndIf
UseGadgetList(WindowID(0))
Fenetre_Dimension(#MDI_Categorie)
EndIf
EndProcedure
Procedure Fenetre_Edition_Titre()
If IsWindow(#MDI_Titre) = 0
AddGadgetItem(#MDI, #MDI_Titre, "Editer les titres")
#MDI_Titre_Texte_H = 32
If Organisation <> 0
SetGadgetState(#MDI, Organisation)
While WindowEvent() : Wend
EndIf
UseGadgetList(WindowID(0))
Fenetre_Dimension(#MDI_Titre)
EndIf
EndProcedure
Procedure Fenetre_Dimension(Zone = -1)
If Zone <= 0
y = 0
L = WindowWidth(0)
H = WindowHeight(0) - MenuHeight()
ForEach Clavier()
If Clavier()\Active = 1
x = #Clavier_Espace
ResizeGadget(Clavier()\Nom_ID, x, y + (#Clavier_Bouton - #Clavier_Nom_H) / 2, #PB_Ignore, #PB_Ignore) : x + #Clavier_Nom
ResizeGadget(Clavier()\Maj_ID, x, y, #PB_Ignore, #PB_Ignore) : x + #Clavier_Bouton_Maj + #Clavier_Espace
x2 = 0
For n = 0 To #Clavier_NbLettre - 1
If Clavier()\Touche_ID[n]
ResizeGadget(Clavier()\Touche_ID[n], x + x2, y, #PB_Ignore, #PB_Ignore)
x2 + #Clavier_Bouton
If x2 + x + #Clavier_Bouton > L And n < #Clavier_NbLettre - 1 And Clavier()\Touche_ID[n + 1]
x2 = 0
y + #Clavier_Bouton
EndIf
Else
Break
EndIf
Next
y + #Clavier_Bouton + #Clavier_Espace
EndIf
Next
ResizeGadget(#MDI, #Recherche_Largeur + #Espace_V + #Categorie_Largeur + #Espace_V, y, L - #Recherche_Largeur - #Espace_V - #Categorie_Largeur - #Espace_V, H - y)
x = 0
If y = 0
y = #Espace_H
EndIf
y2 = y
ResizeGadget(#Categorie_Ligne_H, x, y, #PB_Ignore, #PB_Ignore) : y + #Espace_Ligne
ResizeGadget(#Dictionnaire_Nom, x + #Espace_V, y, #PB_Ignore, #PB_Ignore) : y + #Categorie_Texte_H
ResizeGadget(#Dictionnaire_Liste, x, y, #PB_Ignore, #PB_Ignore) : y + GadgetHeight(#Dictionnaire_Liste) + #Espace_H
ResizeGadget(#Categorie_Ligne_H + 1, x, y, #PB_Ignore, #PB_Ignore) : y + #Espace_Ligne
ResizeGadget(#Categorie_Nom, x + #Espace_V, y, #PB_Ignore, #PB_Ignore) : y + #Categorie_Texte_H
y = y2
x = #Categorie_Largeur + #Espace_V
ResizeGadget(#Recherche_Ligne_H, x, y, #PB_Ignore, #PB_Ignore) : y + #Espace_Ligne
ResizeGadget(#Recherche_Nom, x + #Espace_V, y, #PB_Ignore, #PB_Ignore) : y + #Recherche_Texte_H
ResizeGadget(#Recherche_Texte, x, y, #PB_Ignore, #PB_Ignore) : y + GadgetHeight(#Recherche_Texte)
y + #Espace_H
ResizeGadget(#Recherche_Categories, x, y, #PB_Ignore, #PB_Ignore) : y + GadgetHeight(#Recherche_Categories)
ResizeGadget(#Recherche_Titres, x, y, #PB_Ignore, #PB_Ignore) : y + GadgetHeight(#Recherche_Titres)
y + #Espace_H
ResizeGadget(#Recherche_Lancer, x, y, #PB_Ignore, #PB_Ignore) : y + GadgetHeight(#Recherche_Lancer)
ResizeGadget(#Recherche_Defaut, x, y, #PB_Ignore, #PB_Ignore) : y + GadgetHeight(#Recherche_Defaut)
y + #Espace_H
ResizeGadget(#Recherche_Ligne_H + 1, x, y, #PB_Ignore, #PB_Ignore) : y + #Espace_Ligne
ResizeGadget(#Resultat_Nom, x + #Espace_V, y, #PB_Ignore, #PB_Ignore) : y + #Recherche_Texte_H
ResizeGadget(#Resultat_Liste, x, y, #PB_Ignore, H - y - #Espace_H)
If Organisation <> 0
SetGadgetState(#MDI, Organisation)
While WindowEvent() : Wend
EndIf
EndIf
; RedrawWindow_(GadgetID(#MDI), 0, 0, 1)
If IsWindow(#MDI_Categorie) And (Zone < 0 Or Zone = #MDI_Categorie)
x = 0
y = 0
L = WindowWidth(#MDI_Categorie)
H = WindowHeight(#MDI_Categorie)
EndIf
If IsWindow(#MDI_Titre) And (Zone < 0 Or Zone = #MDI_Titre)
x = 0
y = 0
L = WindowWidth(#MDI_Categorie)
H = WindowHeight(#MDI_Categorie)
EndIf
EndProcedure
Charger_Clavier()
; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 500, 500, "Dictionnaire", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_Maximize | #PB_Window_Invisible | #PB_Window_SizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
End
EndIf
;{- Police
LoadFont(0, "Tahoma", 8, #PB_Font_HighQuality)
LoadFont(1, "Tahoma", 8, #PB_Font_HighQuality | #PB_Font_Bold)
SetGadgetFont(#PB_Default, FontID(0))
;}
;{- Menu
If CreateMenu(0, WindowID(0))
MenuTitle("Edition")
MenuItem(#Menu_Edition_Definition_Editer, "Ajouter une définition")
MenuItem(#Menu_Edition_Definition_Editer, "Editer la définition")
MenuBar()
MenuItem(#Menu_Edition_Categorie, "Editer les catégories")
MenuItem(#Menu_Edition_Titre, "Editer les titres")
MenuTitle("Options")
OpenSubMenu("Claviers")
ForEach Clavier()
MenuItem(Clavier()\Menu_ID, Clavier()\Nom)
SetMenuItemState(0, Clavier()\Menu_ID, Clavier()\Active)
Next
CloseSubMenu()
MenuBar()
MenuItem(#Menu_Option_Langue, "Select language")
MenuTitle("Fenêtres")
MenuItem(#Menu_Organiser_Cascade, "Cascade")
MenuItem(#Menu_Organiser_Horizontal, "Horizontal")
MenuItem(#Menu_Organiser_Vertical, "Vertical")
Gestion_Organisation(Organisation)
EndIf
;}
;{- Images
Couleur_Fond = GetSysColor_(#COLOR_3DFACE)
CreateImage(#Categorie_Ligne_H, #Categorie_Largeur, 2)
StartDrawing(ImageOutput(#Categorie_Ligne_H))
StopDrawing()
CreateImage(#Recherche_Ligne_H, #Recherche_Largeur, 2)
StartDrawing(ImageOutput(#Recherche_Ligne_H))
StopDrawing()
;}
;{- Gadgets
ForEach Clavier()
If Clavier()\Active
Clavier_Creation()
EndIf
Next
MDIGadget(#MDI, 0, 0, 400, 400, 2, #Menu_MDI)
; AddGadgetItem(#MDI, #PB_Any, "Blabla 1")
; AddGadgetItem(#MDI, #PB_Any, "Blabla 2")
For n = 0 To 1
ImageGadget(#Categorie_Ligne_H + n, 0, 0, #Categorie_Largeur, 2, ImageID(#Categorie_Ligne_H))
Next
TextGadget(#Dictionnaire_Nom, 0, 0, #Categorie_Largeur - #Espace_V, #Categorie_Texte_H, "Dictionnaire")
SetGadgetFont(#Dictionnaire_Nom, FontID(1))
ComboBoxGadget(#Dictionnaire_Liste, 0, 0, #Categorie_Largeur, 50)
TextGadget(#Categorie_Nom, 0, 0, #Categorie_Largeur - #Espace_V, #Categorie_Texte_H, "Catégories")
SetGadgetFont(#Categorie_Nom, FontID(1))
For n = 0 To 1
ImageGadget(#Recherche_Ligne_H + n, 0, 0, #Recherche_Largeur, 2, ImageID(#Recherche_Ligne_H))
Next
TextGadget(#Recherche_Nom, 0, 0, #Recherche_Largeur - #Espace_V, #Recherche_Texte_H, "Rechercher")
SetGadgetFont(#Recherche_Nom, FontID(1))
StringGadget(#Recherche_Texte, 0, 0, #Recherche_Largeur, GadgetHeight(#Dictionnaire_Liste), "")
ListIconGadget(#Recherche_Categories, 0, 0, #Recherche_Largeur, 100, "Dans les catégories :", #Recherche_Largeur - 30, #PB_ListIcon_FullRowSelect | #PB_ListIcon_CheckBoxes)
ListIconGadget(#Recherche_Titres, 0, 0, #Recherche_Largeur, 100, "Dans les titres :", #Recherche_Largeur - 30, #PB_ListIcon_FullRowSelect | #PB_ListIcon_CheckBoxes)
ButtonGadget(#Recherche_Lancer, 0, 0, #Recherche_Largeur, 25, "Lancer", #PB_Button_Default)
SetGadgetFont(#Recherche_Lancer, FontID(1))
ButtonGadget(#Recherche_Defaut, 0, 0, #Recherche_Largeur, 21, "Effacer")
TextGadget(#Resultat_Nom, 0, 0, #Recherche_Largeur - #Espace_V, #Recherche_Texte_H, "Résultats")
SetGadgetFont(#Resultat_Nom, FontID(1))
ListViewGadget(#Resultat_Liste, 0, 0, #Recherche_Largeur, 100)
;}
Fenetre_Dimension()
HideWindow(0, 0)
Repeat
Event = WaitWindowEvent()
Select EventWindow() ; Fenêtre de provenance
Case 0
Select Event ; Evènement
Case #PB_Event_Menu
Select EventMenu()
;{ Menu "Fenêtre"
Case #Menu_Organiser_Cascade
SetGadgetState(#MDI, #PB_MDI_Cascade )
While WindowEvent() : Wend
Gestion_Organisation(#PB_MDI_Cascade)
Case #Menu_Organiser_Horizontal
SetGadgetState(#MDI, #PB_MDI_TileHorizontally )
While WindowEvent() : Wend
Gestion_Organisation(#PB_MDI_TileHorizontally)
Case #Menu_Organiser_Vertical
SetGadgetState(#MDI, #PB_MDI_TileVertically )
While WindowEvent() : Wend
Gestion_Organisation(#PB_MDI_TileVertically)
;}
;{Menu edition
Case #Menu_Edition_Categorie
Fenetre_Edition_Categorie()
Case #Menu_Edition_Titre
Fenetre_Edition_Titre()
;}
Case #Menu_Option_Langue
Default
ForEach Clavier()
If EventMenu() = Clavier()\Menu_ID
Clavier()\Active = Clavier()\Active ! 1
Clavier_Creation()
SetMenuItemState(0, Clavier()\Menu_ID, Clavier()\Active)
Fenetre_Dimension()
EndIf
Next
EndSelect
Case #PB_Event_Gadget
ForEach Clavier()
Select EventGadget() ; Gadgets
Case Clavier()\Maj_ID
Clavier()\Maj = GetGadgetState(Clavier()\Maj_ID)
Clavier_Majuscule()
EndSelect
Next
Case #PB_Event_SizeWindow
Fenetre_Dimension(0)
Case #PB_Event_CloseWindow
Quitter = 1
EndSelect
Case #MDI_Categorie
Select Event
Case #PB_Event_SizeWindow
Fenetre_Dimension(#MDI_Categorie)
Gestion_Organisation(0)
Case #PB_Event_MoveWindow
Gestion_Organisation(0)
Case #PB_Event_CloseWindow
CloseWindow(#MDI_Categorie)
EndSelect
Case #MDI_Titre
Select Event
Case #PB_Event_SizeWindow
Fenetre_Dimension(#MDI_Categorie)
Gestion_Organisation(0)
Case #PB_Event_MoveWindow
Gestion_Organisation(0)
Case #PB_Event_CloseWindow
CloseWindow(#MDI_Categorie)
EndSelect
Default
EndSelect
Until Quitter
End