PureBasic

Forums PureBasic
Nous sommes le Sam 24/Oct/2020 4:24

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
 Sujet du message: Programmation automatique (Winconstructeur)
MessagePosté: Lun 02/Déc/2019 14:53 
Hors ligne

Inscription: Jeu 05/Fév/2009 17:58
Messages: 980
Suite

Code:
;*****************************************************
; WinConstructeur V5 01/12/2019                      *
; Programmer par MLD Compilation PB 5.71 LTS         *
; ATTENTION NE PAS COCHER  le DPI DANS le COMPILATEUR*
;*****************************************************
;¤¤¤¤¤¤ Assignation gadgets ¤¤¤¤¤¤¤¤¤¤¤¤
#WinCtr = 1
;>>>>> les Frames
#Frame3D_idfen = 2 :#Frame3D_titre = 3 :#Frame3D_attrib = 4 :#Frame3D_wincolor = 5
#Frame3D_tailpos = 6 :#Frame3D_opt = 7 :#Frame3D_loop = 8 :#Frame3D_fonct = 9
;>>>>> les Coches
#Coche_enum_oui = 18 :#Coche_enum_non = 19 :#coche_MinimizeGad = 20 :#coche_MaximizeGad = 21
#coche_size = 22 :#coche_Invisible = 23 :#coche_Tool = 24 :#coche_Maximize  = 25
#coche_Minimize  = 26 :#coche_Border  = 27 :#coche_ScreenCentered = 28:#coche_Invisiblebar = 32 :#coche_Wincolor = 33
#coche_StickyWin = 35 :#coche_Transp = 36 :#coche_Loop_2 = 38 :#coche_Loop_3 = 39
#coche_Loop_4 = 40 :#coche_Loop_5 = 41 :#coche_Cadre = 42 :#coche_Depsour = 43
#coche_dimauto = 45 :#coche_Plecr = 46 :#coche_btv = 47 :#coche_autmax = 48:#coche_autre = 49:#coche_Fsec = 50
;>>>>> les TextGadgets
#Text_posX = 61 :#Text_posY = 62 :#Text_larg = 63 :#Text_Haut = 64
#Text_col1 = 70 :#Text_col2 = 71 :#Text_col3 = 72 :#Text_col4 = 73
#Text_col5 = 74 :#Text_col6 = 75 :#Text_colcod = 76 :#Text_colG = 77 :#Text_Transp = 78:#Text_transp2 = 79 :#Text_titre = 80
;>>>>> les StringGadgets
#String_Winid = 100 :#String_Titre = 101
;>>>>> les SpinGadgets
#Spin_PosX = 102 :#Spin_PosY = 103 :#Spin_Larg = 104 :#Spin_Haut = 105
;>>>>> les boutons
#Bt_aid = 123 :#Bt_enrAUTO = 124 :#Bt_Cop = 125 :#Bt_enrmod = 126 :#Bt_Ouvmod = 127 :#Bt_Raz = 128 :#Bt_Stop = 129 :#Bt_coloreq = 130
;>>>>> les autres gadgets
#ftest = 140 :#trck_R = 141 :#trck_G = 142 :#trck_B = 143 :#Trakb_Winctr = 144 :#Edit = 149
;>>>>> Le fichier
#fichmod = 150:#FicDim = 151
;>>>>>> la petite fenêtre
#Wenr = 200 :#text_1 = 201 :#text_2 = 202 :#text_3 = 203 :#bt_1 = 204 :#bt_2 = 205 : #list1 = 206

Declare inscripcode()
Declare fentest()
Declare optft()
Declare fendepart()

Global Dim TcodeID.s(4),Dim TcodeWin.s(10),Dim Tcodebcl.s(12),Dim Toptf.s(7),Dim L.s(11)
Global Titr$,sap.b,Y,Hwq.d,Dpspin
Global opt1.l,opt2.l,opt3.l,opt4.l,typH.b,opt1$ = "#NUL",opt2$ = "#NUL",opt3$ = "#NUL",opt4$ = "#NUL",typH.b = 0
Global Ftyp = 0,dlect = 0

;¤¤¤¤ aide ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
L.s(1) = "But du logiciel:" +#CRLF$
L.s(2) = "Réalisation rapide d'une fenêtre. (Windows uniquement)."+#CRLF$
L.s(3) = "La fenêtre de commande est suffisament explicite pour ne pas faire une aide trop importante. Quelques points sont a signaler"+#CRLF$
L.s(4) = "Deux façons de désigner les fenêtres et les gadgets sont possibles. Enumération automatique ou assignation.(Numérotage)"+#CRLF$
L.s(5) = "Dimensions automatiques, veut dire en fonction de la résolution des écrans. La case DPI du compilateur ne doit pas être cochée."+#CRLF$
L.s(6) = "Fenêtre secondaire cochée, veut dire que la fenêtre principale a déja été réalisée avec le code pour un dimensionnement automatique,"+#CRLF$
L.s(7) = "que donc le code d'automatisme ne sera pas produit pour cette fenêtre."+#CRLF$
L.s(8) = "Vous pouvez enregistrer des modèles de fenêtre pour une utilisation ultérieure."+#CRLF$
L.s(9) = "Ce logiciel étant compatible avec AUTOGAD_V4 vous pouvez enregistrer les dimensions de la fenêtre pour une utilisation avec celui-ci."+#CRLF$
L.s(10) = "Le tranfer du code se fait par l'intermédiaire du presse papier."+#CRLF$
L.s(11) = "RESTRICTIONS:L'invisibilité de la fenêtre teste dans la barre de tâches, ainsi que le déplacement en fenêtre borderless n'est pas possible."+#CRLF$
For X = 1 To 11
   LT$ = LT$ + L.s(X)
Next
FreeArray(L.s()) 
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Macro tab(dptab)
If dptab = 2
   Dim TcodeID.s(4):Dim TcodeWin.s(10):Dim Tcodebcl.s(12):Dim Toptf.s(7)
Else
   FreeArray(TcodeID.s()):FreeArray(TcodeWin.s()):FreeArray(Tcodebcl.s()):FreeArray(Toptf.s())
EndIf 
EndMacro 

Macro EcriEtict(gad)
  SetGadgetFont(gad,FontID1)
EndMacro

Macro DG(gad,num);disabledgadget
If num = 1 
   DisableGadget(gad,1)
Else
   DisableGadget(gad,0)
EndIf 
EndMacro

Macro razCdim(gad)
  For z = 46 To 49
    If z <> gad:MLD_ActCoche(z,0):EndIf
  Next 
EndMacro

Macro razSdim()
  For zz = 61 To 64
    DG(zz,0)
  Next
  For zz = 102 To 105
    DG(zz,0)
  Next
EndMacro

Macro razbcl()
  For x = 2 To ArraySize(Tcodebcl.s())
    Tcodebcl.s(x)= ""
  Next 
EndMacro
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤Dimensions automatiques ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Global Dim DA.s(55)
#Ldef = 1920:#Hdef = 1080
Global typH.b,L.d
Global definecrlarg.d = GetSystemMetrics_(#SM_CXSCREEN):Global definecrht.d = GetSystemMetrics_(#SM_CYSCREEN)

Procedure MouseHook(nCode, wParam, lParam)
  If wParam = #WM_LBUTTONUP
   sap.b = 1
  ElseIf wParam = #WM_MOUSEMOVE Or wParam = #WM_LBUTTONDOWN
    sap.b = 0
  EndIf
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, lParam)
EndProcedure

Procedure Hw(Dh.d,typH.b)
SystemParametersInfo_(#SPI_GETWORKAREA,0,@DesktopWorkArea.RECT,0)
htTaskbarwin.d = definecrht.d - DesktopWorkArea\Bottom
If opt1.l = #PB_Window_BorderLess
  OpenWindow(2000,0,0,200,200,"",#PB_Window_BorderLess|#PB_Window_Invisible)
Else
  OpenWindow(2000,0,0,200,200,"",#PB_Window_SystemMenu|#PB_Window_Invisible)
EndIf
EPframeL.d = WindowX(2000, #PB_Window_InnerCoordinate) 
Httitre.d = WindowY(2000, #PB_Window_InnerCoordinate)
CloseWindow(2000)
Select typH.b
  Case 1 ;fen avec titre et haut max
   Hwq.d = definecrht - Httitre.d
  Case 2 ;fen avec titre et barre de tache win visible
    Hwq.d = definecrht - (htTaskbarwin  + Httitre.d  + EPframeH)
  Case 3 ;fen sans titre et hauteur max
    If GetGadgetState(42) = 1:Hwq.d = definecrht -6:Else:Hwq.d = definecrht:EndIf
  Case 4 ;fen sans titre et barre de tache win visible
    Hwq.d = definecrht - htTaskbarwin
  Default ;fen quelconque
   Hwq.d =  Dh * (definecrht /#Hdef)
EndSelect
ProcedureReturn Hwq.d
EndProcedure

Procedure Lw(dL.d)
L.d = dL * (definecrlarg /#Ldef)
ProcedureReturn L.d
EndProcedure

Procedure Ywp(y.d)
ProcedureReturn y.d *(definecrht.d /#Hdef)
EndProcedure

Procedure XWp(lp.d)
ProcedureReturn lp.d * (definecrlarg /#Ldef)
EndProcedure

Procedure MLD_openfen(ng.d,x.d,y.d,Lf.d,H.d,titre$,opt1.l,opt2.l,opt3.l,opt4.l,typH.b)
  If typH.b <> 0 : y.d = 0:EndIf
  OpenWindow(ng.d,Xwp(x.d),Ywp(y.d),Lw(Lf.d),Hw(H.d,typH.b),titre$,opt1.l|opt2.l|opt3.l|opt4.l)
EndProcedure

Procedure X(lg.d)
  ProcedureReturn lg *(definecrlarg.d/#Ldef)
EndProcedure

Procedure y(h.d)
  ProcedureReturn h *(definecrht.d /#Hdef)
EndProcedure

DA.s(1) = "#Ldef = 1920:#Hdef = 1080"
DA.s(2) = "Global typH.b,L.d"
DA.s(3) = "Global definecrht.d = GetSystemMetrics_(#SM_CYSCREEN):Global definecrlarg.d = GetSystemMetrics_(#SM_CXSCREEN)"
DA.s(4) = " "
DA.s(5) = "Procedure Hw(Dh.d,typH.b)"
DA.s(6) = " SystemParametersInfo_(#SPI_GETWORKAREA,0,@DesktopWorkArea.RECT,0)"
DA.s(7) = " htTaskbarwin.d = definecrht.d - DesktopWorkArea\Bottom"
DA.s(8) = " If opt1.l = #PB_Window_BorderLess"
DA.s(9) = "   OpenWindow(2000,0,0,200,200," + Chr(34)+Chr(34)+",#PB_Window_BorderLess|#PB_Window_Invisible)"
DA.s(10) = " Else"
DA.s(11) = "   OpenWindow(2000,0,0,200,200," + Chr(34)+Chr(34)+ ",#PB_Window_SystemMenu|#PB_Window_Invisible)"
DA.s(12) = " EndIf"
DA.s(13) = " EPframeL.d = WindowX(2000, #PB_Window_InnerCoordinate)" 
DA.s(14) = " Httitre.d = WindowY(2000, #PB_Window_InnerCoordinate)"
DA.s(15) = " CloseWindow(2000)"
DA.s(16) = " Select typH.b"
DA.s(17) = "  Case 1 ;fen avec titre et haut max "
DA.s(18) = "   Hwq.d = definecrht - Httitre.d"
DA.s(19) = "  Case 2 ;fen avec titre et barre de tache win visible"
DA.s(20) = "   Hwq.d = definecrht - (htTaskbarwin  + Httitre.d  + EPframeH)"
DA.s(21) = "  Case 3 ;fen sans titre et hauteur max"
DA.s(22) = "   Hwq.d = definecrht "
DA.s(23) = "  Case 4 ;fen sans titre et barre de tache win visible"
DA.s(24) = "   Hwq.d = definecrht - htTaskbarwin"
DA.s(25) = "  Default ;fen quelconque"
DA.s(26) = "   Hwq.d =  Dh * (definecrht /#Hdef)"
DA.s(27) = " EndSelect"
DA.s(28) = " ProcedureReturn Hwq.d "
DA.s(29) = "EndProcedure"
DA.s(30) = " "
DA.s(31) = "Procedure Lw(dL.d)"
DA.s(32) = " L.d = dL * (definecrlarg /#Ldef)"
DA.s(33) = " ProcedureReturn L.d"
DA.s(34) = "EndProcedure"
DA.s(35) = " "
DA.s(36) = "Procedure Ywp(y.d)"
DA.s(37) = " ProcedureReturn y.d *(definecrht.d /#Hdef)"
DA.s(38) = "EndProcedure"
DA.s(39) = " "
DA.s(40) = "Procedure XWp(lp.d)"
DA.s(41) = " ProcedureReturn lp.d * (definecrlarg /#Ldef)"
DA.s(42) = "EndProcedure"
DA.s(43) = " "
DA.s(44) = "Procedure MLD_openfen(ng.d,x.d,y.d,Lf.d,H.d,titre$,opt1.l,opt2.l,opt3.l,opt4.l,typH.b)"
DA.s(45) = " If typH.b <> 0 : y.d = 0:EndIf"
DA.s(46) = " OpenWindow(ng.d,Xwp(x.d),Ywp(y.d),Lw(Lf.d),Hw(H.d,typH.b),titre$,opt1.l|opt2.l|opt3.l|opt4.l)"
DA.s(47) = "EndProcedure"
Da.s(48) = " "
Da.s(49) = "Procedure X(lg.d)"
Da.s(50) = "  ProcedureReturn lg *(definecrlarg.d/#Ldef)"
Da.s(51) = "EndProcedure"
Da.s(52) = " "
Da.s(53) = "Procedure y(h.d)"
Da.s(54) = "  ProcedureReturn h *(definecrht.d /#Hdef)"
Da.s(55) = "EndProcedure"
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Global FontID1 = LoadFont(161,"Noto Serif Condensed",X(10),0|0|0|0|0)
Global FontID2 = LoadFont(162,"Noto Serif Condensed",X(10),256|0|0|0|0)

Procedure cadrestring(Gad)
  SetWindowLongPtr_(GadgetID(Gad),#GWL_EXSTYLE,GetWindowLongPtr_(GadgetID(Gad),#GWL_EXSTYLE)|#WS_EX_STATICEDGE &~ #WS_EX_CLIENTEDGE)
  SetWindowPos_(GadgetID(Gad),0,0,0,0,0,#SWP_NOZORDER|#SWP_NOMOVE|#SWP_NOSIZE|#SWP_FRAMECHANGED|#SWP_DRAWFRAME)
EndProcedure

Procedure GestionCaret(Gadget) ; Gestion du caret dans stringGadget
SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position)   
y = Debut_Position
Texte.s = GetGadgetText(Gadget)
x =Len(Texte)
Texte2.s = Left(Texte,y ) + Right(Texte,x-y)
SendMessage_(GadgetID(Gadget), #EM_SETSEL, x, x)
EndProcedure

Procedure MLD_ActCoche(Gad,Act) ;1 = actif 0 = non actif
haut.D = GadgetHeight(Gad): larg.D = haut.D
;fontche = LoadFont(Gad,"Noto sans Condensed",X(haut * 0.75),256)
CreateImage(Gad,larg,haut)
hdc=StartDrawing(ImageOutput(Gad))
  ;Dessine l'image
  DrawingMode(#PB_2DDrawing_Gradient)     
  BackColor($BEBEBE):FrontColor($FFFFFF)
  LinearGradient(0,haut *1.5,0,0)
  Box(0,0,larg,haut)
  ;Position du texte
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID2);font obligatoire en tête de programme
  txtcoche$ = Chr(10003)
  hautxtC = TextHeight(txtcoche$):largtxtC = TextWidth(txtcoche$)
  ctrtxtC = ((larg - largtxtC)/2 )+1; centre le text en largeur
  ctxtC = (haut - hautxtC)/2  ; centre le text en hauteur
  If Act = 1
   SetGadgetState(Gad,1):DrawText(ctrtxtC,ctxtC,txtcoche$,$32CD32)
Else
   SetGadgetState(Gad,0)
  EndIf
StopDrawing()
SetGadgetAttribute(Gad,#PB_Button_Image,ImageID(Gad))     
EndProcedure

Procedure MLD_Coche(Gad,x.D,y.D,larg.D,haut.D,txt$,coultxt,Action) ;le num de gadget ne doit jamais être 0| Action 1 = ok 0 = no ok
  ButtonImageGadget(Gad,x,y,haut,haut,0,#PB_Button_Toggle)
  CouleurFond = GetSysColor_(#COLOR_3DFACE)
  ;Font = LoadFont(0,"Noto Sans Condensed",X(10))
  hautbt.D = GadgetHeight(Gad)
  plG = x + hautbt.D + 12
  txtgad = TextGadget(#PB_Any,plG,y,larg.D,haut.D,txt$,#SS_CENTERIMAGE)
  SetGadgetColor(txtgad,#PB_Gadget_BackColor,CouleurFond) :SetGadgetColor(txtgad,#PB_Gadget_FrontColor,coultxt)
  SetGadgetFont(txtgad,FontID1);font obligatoire en tête de programme
  MLD_ActCoche(Gad,Action)
EndProcedure

Procedure affcodecolor()
   SetGadgetText(73,"$" + Hex(GetGadgetState(141)));R
   SetGadgetText(74,"$" + Hex(GetGadgetState(142)));V
   SetGadgetText(75,"$" + Hex(GetGadgetState(143)));B
   SetGadgetText(76,GetGadgetText(75)+ Hex(GetGadgetState(142))+ Hex(GetGadgetState(141)))
   SetGadgetColor(77,#PB_Gadget_BackColor,RGB(GetGadgetState(#trck_R),GetGadgetState(#trck_G),GetGadgetState(#trck_B)))
EndProcedure

Procedure colorRequest()
Couleur = ColorRequester()
If Couleur > -1
SetGadgetState(143,Blue(Couleur))
SetGadgetState(142,Green(Couleur))
SetGadgetState(141,Red(Couleur))
affcodecolor()
EndIf
EndProcedure

Procedure gID(act.i) ;gestion de l'ID
  a$ = Trim(GetGadgetText(100))
  If Left(a$,1) <> "#"
    SetGadgetText(100,"#" + a$)
  EndIf
  If act.i = 19
    If FindString(GetGadgetText(100),"=")= 0
      SetGadgetText(100,GetGadgetText(100) + " = 1")
    EndIf
  Else
    b$ = GetGadgetText(100):y = FindString(b$,"=")
    If  y <> 0
      SetGadgetText(100,Left(b$,(y-2)))
    EndIf 
  EndIf
  GestionCaret(100)
EndProcedure

Procedure construcwin()
  X = GetGadgetState(102):Y = GetGadgetState(103):larg = GetGadgetState(104):haut = GetGadgetState(105)
  If GetGadgetState(18) = 1:cdID$ = Trim(TcodeID(2)):EndIf
  If GetGadgetState(19) = 1:cdID$ = Trim(TcodeID(4)):EndIf
  If Ftyp = 1
    If GetGadgetState(24) = 1;pour fen tool
      TcodeWin(1) = "OpenWindow(" + cdID$ + ","+ X + "," + Y + "," + larg  + "," + haut + "," + Chr(34)+ GetGadgetText(101)+ Chr(34)+ ","+ "#PB_Window_SystemMenu"+ "|" + "#PB_Window_Tool" + "|" + opt4$ + ")"
    EndIf
    If GetGadgetState(27) = 1;pour fen borderless
      TcodeWin(1) = "OpenWindow(" + cdID$ + ","+ X + "," + Y + "," + larg  + "," + haut + "," + Chr(34)+ GetGadgetText(101)+ Chr(34)+ ","+ "#PB_Window_BorderLess"+ "|" + opt4$ + ")"
    EndIf
    If GetGadgetState(24) = 0 And GetGadgetState(27) = 0
      TcodeWin(1) = "OpenWindow(" + cdID$ + ","+ X + "," + Y + "," + larg  + "," + haut + "," + Chr(34)+ GetGadgetText(101)+ Chr(34)+ "," + opt1$ + "|" + opt2$ + "|" +  opt3$ + "|"+ opt4$ + ")"
    EndIf 
  EndIf
  If Ftyp = 2
    If GetGadgetState(46) = 1;pour plein écran
      X = 0:Y = 0:larg = #Ldef :haut = #Hdef:EndIf
    If GetGadgetState(24) = 1;pour fen tool
      TcodeWin(1) = "MLD_openfen(" + cdID$ + ","+ X + "," + Y + "," + larg  + "," + haut + "," + Chr(34)+ GetGadgetText(101)+ Chr(34)+ ","+ "#PB_Window_SystemMenu"+ "," + "#PB_Window_Tool" + "," + opt4$ + "," + typH.b + ")"
    EndIf
    If GetGadgetState(27) = 1;pour fen borderless
      TcodeWin(1) = "MLD_openfen(" + cdID$ + ","+ X + "," + Y + "," + larg  + "," + haut + "," + Chr(34)+ GetGadgetText(101)+ Chr(34)+ ","+ "#PB_Window_BorderLess" + "," + opt2$ + "," + opt3$ + "," + opt4$ + "," + typH.b + ")"
    EndIf
    If GetGadgetState(24) = 0 And GetGadgetState(27) = 0
      TcodeWin(1) = "MLD_openfen(" + cdID$ + ","+ X + "," + Y + "," + larg  + "," + haut + "," + Chr(34)+ GetGadgetText(101)+ Chr(34)+ "," + opt1$ + "," + opt2$ + "," +  opt3$ + ","+ opt4$ + "," + typH.b + ")"
    EndIf 
  EndIf
  If GetGadgetState(32) = 1
    Toptf.s(5) = "SetWindowLongPtr_(WindowID(" + cdID$ + "),#GWL_HWNDPARENT,FindWindow_(0," + Chr(34)+ "program manager" + Chr(34) + "))"
  Else
    Toptf.s(5) = ""
  EndIf 
  If GetGadgetState(33) = 1
    Toptf.s(1) = "SetWindowColor(" + cdID$ + "," + GetGadgetText(76) + ")"
  Else
    Toptf.s(1) = ""
  EndIf
  If GetGadgetState(35) = 1:Toptf.s(4) = "StickyWindow(" + cdID$ + ",1)":Else :Toptf.s(4) = "":EndIf
  If GetGadgetState(36) = 1
    valtr$= Str(GetGadgetState(144))
    Toptf.s(2) = "SetWindowLongPtr_(WindowID(" + cdID$ + "),#GWL_EXSTYLE,#WS_EX_LAYERED)"
    Toptf.s(3) = "SetLayeredWindowAttributes_(WindowID(" + cdID$ + "),0," + valtr$ + ",#LWA_ALPHA)"
  Else
    Toptf.s(2) = "":Toptf.s(3) = ""
  EndIf
  If GetGadgetState(38) = 1 ;boucle min
    Tcodebcl.s(1) = "Repeat":Tcodebcl.s(2) = "  Event = WaitWindowEvent()" :Tcodebcl.s(6) = Space(6):Tcodebcl.s(7) = Space(3)
    Tcodebcl.s(10)= "Until Event  = #PB_Event_CloseWindow":Tcodebcl.s(11)= "End"
  EndIf
  If GetGadgetState(39) = 1 ;boucle stand if
    Tcodebcl.s(2) = "  Event = WaitWindowEvent()"
    Tcodebcl.s(6) = "   If Event = #PB_Event_Gadget"
    Tcodebcl.s(7) = "    Select EventGadget()"
    Tcodebcl.s(8) = " "
    Tcodebcl.s(9) = "    EndSelect"
    Tcodebcl.s(10) = "  EndIf"
    Tcodebcl.s(11) = "Until Event = #PB_Event_CloseWindow"
    Tcodebcl.s(12) = "End"
  EndIf
  If GetGadgetState(40) = 1 ;boucle stand select
    Tcodebcl.s(2) = "  Select WaitWindowEvent()"
    Tcodebcl.s(6) = "   Case #PB_Event_Gadget"
    Tcodebcl.s(7) = " "
    Tcodebcl.s(8) = "   Case #PB_Event_CloseWindow"
    Tcodebcl.s(9) = "    Break"
    Tcodebcl.s(10) = " EndSelect"
    Tcodebcl.s(11) = "ForEver"
    Tcodebcl.s(12) = "End"
  EndIf
  If GetGadgetState(41) = 1 ;boucle sans fin pour borderless
    Tcodebcl.s(2) = "  Event = WaitWindowEvent()"
    Tcodebcl.s(6) = "   If Event = #PB_Event_Gadget"
    Tcodebcl.s(7) = "    Select EventGadget()"
    Tcodebcl.s(8) = " "
    Tcodebcl.s(9) = "    EndSelect"
    Tcodebcl.s(10) = "  EndIf"
    Tcodebcl.s(11) = "ForEver"
    Tcodebcl.s(12) = "End"
  EndIf
  If GetGadgetState(42) = 1
    Toptf.s(6) = "SetWindowLongPtr_(WindowID(" + cdID$ + "), #GWL_STYLE, GetWindowLongPtr_(WindowID(" + cdID$ + "), #GWL_STYLE) | #WS_DLGFRAME)"
    Toptf.s(7) = "SetWindowPos_(WindowID(" + cdID$ + "), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)"
  Else
    Toptf.s(6) = "":Toptf.s(7) = ""
  EndIf
  If GetGadgetState(43) = 1 ;déplace une fenêtre borderless
    Tcodebcl(3) = "  If Event = #WM_LBUTTONDOWN"
    Tcodebcl(4) = "    SendMessage_(WindowID(" + cdID$ + "), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)"
    Tcodebcl(5) = "  EndIf"
  Else
    Tcodebcl(3) = "":Tcodebcl(4) = "":Tcodebcl(5) = ""
  EndIf 
EndProcedure 

Procedure Interaction(act.i)
  If GetGadgetState(45) = 1
    Ftyp = 2
  Else
    Ftyp = 1
  EndIf 
  Select act.i 
     Case 18 ;enumération automatique (Tcode 1 a 3 = enum)
       MLD_ActCoche(19,0):MLD_ActCoche(18,1):gID(act.i)
       TcodeID(1) = "Enumeration" :TcodeID(2) = " " + GetGadgetText(100): TcodeID(3) = "EndEnumeration"
       TcodeID(4) = TcodeID(2)
       construcwin():inscripcode()
     Case 19;assignation des gadgets (Tcode 1 a 3 = enum)
       MLD_ActCoche(19,1):MLD_ActCoche(18,0)
       gID(act.i):cID$ = " " + GetGadgetText(100):lgIDC = Len(cID$):z = FindString(cID$,"=")
       TcodeID(2)= cID$:TcodeID(4) = Right(cID$,lgIDC - (z+1));indique le n° de ID épuré
       TcodeID.s(1) = ";¤¤¤¤ Assignation des gadgets ¤¤¤¤" :TcodeID(3) = ";¤¤¤¤¤¤¤¤"
       construcwin():inscripcode()
     Case 20 ;bt minimise
       If GetGadgetState(20) = 1
         opt1.l = #PB_Window_MinimizeGadget:opt1$ = "#PB_Window_MinimizeGadget"
       Else
         opt1.l = 0:opt1$ = "#Nul"
       EndIf 
       If opt1.l = 0 And opt2.l = 0 :opt1.l = #PB_Window_SystemMenu :opt1$ = "#PB_Window_SystemMenu":opt2$ = "#Nul":EndIf
       construcwin():inscripcode():fentest():optft()
     Case 21 ;bt maximise
       If GetGadgetState(21) = 1
         opt2.l = #PB_Window_MaximizeGadget:opt2$ = "#PB_Window_MaximizeGadget"
       Else
         opt2.l = 0:opt2$ = "#Nul"
       EndIf 
       If opt1.l = 0 And opt2.l = 0 :opt1.l = #PB_Window_SystemMenu :opt1$ = "#PB_Window_SystemMenu":opt2$ = "#Nul":EndIf
       construcwin():inscripcode():fentest():optft()
     Case 22;size
       If GetGadgetState(22) = 1
         opt3.l = #PB_Window_SizeGadget:opt3$ = "#PB_Window_SizeGadget"
       Else
         opt3.l = 0:opt3$ = "#Nul"
       EndIf
       construcwin():inscripcode():fentest():optft()
     Case 23;invisible
       If GetGadgetState(23) = 1
         MLD_ActCoche(25,0):MLD_ActCoche(26,0);décoche maximise minimise
         opt4.l = #PB_Window_Invisible:opt4$ = "#PB_Window_Invisible"
       Else
         opt4.l = 0:opt4$ = "#Nul"
       EndIf
       construcwin():inscripcode():fentest():optft()
     Case 24;tool
       If GetGadgetState(24) = 1
        DG(20,1):DG(21,1):DG(22,1):DG(25,1):DG(26,1):DG(27,1);interdit
       Else
         DG(20,0):DG(21,0):DG(22,0):DG(25,0):DG(26,0):DG(27,0);rétablis
       EndIf
       construcwin():inscripcode():fentest():optft()   
     Case 25;maximise
       If GetGadgetState(25) = 1
         MLD_ActCoche(23,0):MLD_ActCoche(26,0);décoche invisible et minimise
         opt4.l = #PB_Window_Maximize:opt4$ = "#PB_Window_Maximize"
       Else
         opt4.l = 0:opt4$ = "#Nul"
       EndIf
       construcwin():inscripcode():fentest():optft()   
     Case 26;minimise
       If GetGadgetState(26) = 1
         MLD_ActCoche(23,0):MLD_ActCoche(25,0) ;décoche invisible et maximise
         opt4.l = #PB_Window_Minimize:opt4$ = "#PB_Window_Minimize"
       Else
         opt4.l = 0:opt4$ = "#Nul"
       EndIf
       construcwin():inscripcode():fentest():optft()     
     Case 27;BorderLess
       If GetGadgetState(27) = 1
         razbcl():MLD_ActCoche(38,0):MLD_ActCoche(39,0):MLD_ActCoche(40,0):MLD_ActCoche(41,1):DG(42,0):DG(43,0)
         DG(20,1):DG(21,1):DG(22,1):DG(24,1):DG(25,1):DG(26,1):DG(39,1):DG(40,1);interdit
       Else
         razbcl():MLD_ActCoche(38,1):MLD_ActCoche(41,0):DG(42,1):DG(43,1)
         DG(20,0):DG(21,0):DG(22,0):DG(25,0):DG(26,0):DG(24,0):DG(39,0):DG(40,0);rétablis
       EndIf
       construcwin():inscripcode():fentest():optft()     
     Case 28;ScreenCentered
       If GetGadgetState(28) = 1
         DG(46,1):DG(47,1):DG(49,1)
         DG(61,1):DG(62,1):DG(63,1):DG(64,1):DG(102,1):DG(103,1):DG(104,1):DG(105,1)   
         opt4.l = #PB_Window_ScreenCentered :opt4$ = "#PB_Window_ScreenCentered"
       Else
         DG(46,0):DG(47,0):DG(49,0):DG(61,0):DG(62,0):DG(63,0):DG(64,0):DG(102,0):DG(103,0):DG(104,0):DG(105,0)
         opt4.l = 0:opt4$ = "#Nul"
       EndIf
       construcwin():inscripcode():fentest() :optft()
      Case 32;Fenêtre invisible dans la barre de tache
       construcwin():inscripcode():fentest():optft()
      Case 33,130,141,142,143 ;color
        If GetGadgetState(33) = 1
          DG(130,0)
          If act.i = 130
            colorRequest()
          Else 
            affcodecolor()
          EndIf
        Else
         DG(130,1):SetGadgetText(76,"$000000"):SetGadgetState(141,0):SetGadgetText(73,"$00")
         SetGadgetState(142,0):SetGadgetText(74,"$00"):SetGadgetState(143,0):SetGadgetText(75,"$00")
         SetGadgetColor(77,#PB_Gadget_BackColor,GetWindowColor(1))
       EndIf
       If sap = 1;action au relachement de la souris
         construcwin():inscripcode():optft()
       EndIf 
      Case 36,144;Transparence
        If GetGadgetState(36) = 1
          SetGadgetText(78,Str(GetGadgetState(144)))
        Else
          SetGadgetText(78,"255"):SetGadgetState(144,255)
       EndIf
       If sap = 1;action au relachement de la souris
         construcwin():inscripcode():optft()
       EndIf 
      Case 35;Sticky
         construcwin():inscripcode():optft()
      Case 38,39,40,41;les boucles
         razbcl():construcwin():inscripcode()
      Case 42;fenêtre sans titre avec cadre
         If GetGadgetState(42) = 1
           construcwin():inscripcode():optft()
         Else
           fentest():construcwin():inscripcode():optft()
         EndIf
      Case 43;déplace une fenêtre borderless
         construcwin():inscripcode()
      Case 45 ; Dim auto
       If GetGadgetState(45) = 0
        DG(50,1):DG(102,0):DG(103,0):DG(104,0):DG(105,0):MLD_ActCoche(49,1):MLD_ActCoche(50,0)
      Else
        DG(50,0)
      EndIf
      construcwin():inscripcode():fentest():optft()   
      Case 46 ; plein écran (dim auto)
        If GetGadgetState(46) = 1
          razCdim(46):razSdim():DG(50,0):DG(61,1):DG(62,1):DG(63,1):DG(64,1)
          DG(102,1):DG(103,1):DG(104,1):DG(105,1):DG(28,1)
        Else
         razSdim():MLD_ActCoche(49,1):DG(28,0)
        EndIf
        fentest():optft():construcwin():inscripcode() 
      Case 47 ; barre visible (dim auto)
        If GetGadgetState(47) = 1
          razCdim(47):razSdim():DG(28,1):DG(50,0):DG(62,1):DG(64,1):DG(103,1):DG(105,1):typH.b = 2
          If GetGadgetState(27) = 1:typH.b = 4:EndIf;pour fenêtre sans titre
        Else
         razSdim():DG(28,0):MLD_ActCoche(49,1):typH.b = 0
        EndIf
        fentest():optft():construcwin():inscripcode() 
      Case 48 ; Hauteur max (dim auto)
        If GetGadgetState(48) = 1
          razCdim(48):razSdim():DG(50,0):DG(62,1):DG(64,1):DG(103,1):DG(105,1):typH.b = 1
          If GetGadgetState(27) = 1:typH.b = 3:EndIf;pour fenêtre sans titre
        Else
         razSdim():DG(28,0):MLD_ActCoche(49,1):typH.b = 0
        EndIf
        fentest():optft():construcwin():inscripcode()
        Interaction(28)
      Case 49 ; Autres avec et sans dim auto
        If GetGadgetState(49) = 1
          razCdim(49):DG(28,0):razSdim():typH.b = 0
        Else
         MLD_ActCoche(49,1):DG(28,0)
       EndIf
       fentest():optft():construcwin():inscripcode()
      Case 50;fen secondaire
        construcwin():inscripcode()
      Case 100 ;string ID 
       Select EventType()
         Case #PB_EventType_Change
           If GetGadgetState(19) = 1
              If FindString(GetGadgetText(100),"=")= 0
                SetGadgetText(100,GetGadgetText(100) + " = ")
                GestionCaret(100)
              EndIf
              n = FindString(GetGadgetText(100),"=")
              If Mid(GetGadgetText(100),n-1,1)<> " ":SetGadgetText(100,InsertString(GetGadgetText(100)," ",n)):GestionCaret(100):EndIf
              If Mid(GetGadgetText(100),n+1,1)<> " ":SetGadgetText(100,InsertString(GetGadgetText(100)," ",n+1)):GestionCaret(100):EndIf
              cID$ = " " + GetGadgetText(100):lgIDC = Len(cID$):z = FindString(cID$,"=")
              TcodeID(2)= cID$
              TcodeID(4) = Right(cID$,lgIDC - (z+1));indique le n° de ID épuré
            Else 
              TcodeID(2) = GetGadgetText(100)
            EndIf
           construcwin():inscripcode() :SetActiveGadget(100)
       EndSelect
      Case 101 ;string titre
        Select EventType()
          Case #PB_EventType_Change
            GestionCaret(101): Titr$ = GetGadgetText(101)
            construcwin():inscripcode()
        EndSelect
  EndSelect
  If dlect = 1;drapeau fenetre enregistrée
   Dpspin = 1:fentest():optft():construcwin():inscripcode(): Dpspin = 0
   dlect = 0
  EndIf 
EndProcedure

Procedure inscripcode()
  If Dpspin = 1;pour ne changer que la ligne lors du chargement des dimensions
    For clg = 1 To CountGadgetItems(149)
      If  Left(GetGadgetItemText(149,clg),3) = "Ope" Or Left(GetGadgetItemText(149,clg),3) = "MLD";cherche la bonne ligne
        Break
      EndIf
    Next 
    SetGadgetItemText(149,clg,TcodeWin(1))
    ProcedureReturn #NUL
  EndIf 
  ClearGadgetItems(149)
  xt=0
  For t= 1 To 3
    If  TcodeID(t) <> ""
      xt = xt +1
      AddGadgetItem(149,xt,TcodeID(t))
    EndIf
  Next
  AddGadgetItem(149,CountGadgetItems(149)+1,"")
  AddGadgetItem(149,CountGadgetItems(149)+1,"")
  If Ftyp = 2 And  GetGadgetState(50) = 0
    For xz = 1 To 55
     xt = xt +1
    AddGadgetItem(149,xt,DA.s(xz))
    Next   
  EndIf   
  AddGadgetItem(149,CountGadgetItems(149)+1,TcodeWin(1))
  For of = 1 To 7
    If  Toptf(of) <> ""
      lg = CountGadgetItems(149)+1
      AddGadgetItem(149,lg,Toptf.s(of))
   EndIf
  Next   
  AddGadgetItem(149,CountGadgetItems(149)+1,";Vos gadgets ici")
  AddGadgetItem(149,CountGadgetItems(149)+1,";")
  AddGadgetItem(149,CountGadgetItems(149)+1,";")
  xb=0
  For tb = 1 To ArraySize(Tcodebcl.s())
    If  Tcodebcl(tb) <> ""
      lg = CountGadgetItems(149)+1
      AddGadgetItem(149,lg,Tcodebcl(tb))
    EndIf
  Next
  SendMessage_(GadgetID(149),#EM_SCROLL,#SB_BOTTOM,0);en bas
EndProcedure

Procedure Raz()
  For z = 18 To 49
    Select z
      Case 18 To 27,28,32,33,35,36,38 To 43,45 To 50
        MLD_ActCoche(z,0)
    EndSelect     
  Next
  MLD_ActCoche(18,1):MLD_ActCoche(20,1):MLD_ActCoche(49,1):MLD_ActCoche(38,1)
  DG(50,1):DG(130,1):DG(20,0):DG(21,0):DG(22,0):DG(25,0):DG(26,0):DG(24,0):DG(39,0):DG(40,0):DG(42,1):DG(43,1):DG(46,0):DG(47,0):DG(48,0):DG(49,0)
  DG(102,0):DG(103,0):DG(104,0):DG(105,0):DG(61,0):DG(62,0):DG(64,0)
  SetGadgetText(100,"#Ma_fen"):SetGadgetText(101,"Ma Fenêtre")
  For x = 141 To 143
    SetGadgetState(x,0)
  Next
  SetGadgetState(144,255)
  For x = 73 To 75
    SetGadgetText(X,"$000")
  Next
  SetGadgetText(76,"$000000"):SetGadgetColor(77,#PB_Gadget_BackColor, GetWindowColor(1)):SetGadgetText(78,"255")
  tab(1):tab(2):typH.b = 0:fendepart()
EndProcedure 

Procedure fendepart() ;ok
  Ftyp = 0
  SetGadgetState(102,720):SetGadgetState(103,75):SetGadgetState(104,660):SetGadgetState(105,250)
  TcodeID(1) = "Enumeration" :TcodeID(2) = GetGadgetText(100): TcodeID(3) = "EndEnumeration"
  TcodeWin(1) =  "OpenWindow(" + GetGadgetText(100) + ",720,75,660,250," + Chr(34) + GetGadgetText(101) + Chr(34) + ",#PB_Window_MinimizeGadget)"
  opt1.l = #PB_Window_MinimizeGadget :opt1$ = "#PB_Window_MinimizeGadget" 
  Tcodebcl.s(1) = "Repeat":Tcodebcl.s(2) = "  Event = WaitWindowEvent()" :Tcodebcl.s(6) = Space(6):Tcodebcl.s(7) = Space(3)
  Tcodebcl.s(10)= "Until Event  = #PB_Event_CloseWindow":Tcodebcl.s(11)= "End"
  inscripcode():fentest() 
EndProcedure

Procedure optft()
  SetWindowColor(140,GetGadgetColor(77,#PB_Gadget_BackColor));couleur de fond fentest
  If GetGadgetState(35) = 1:StickyWindow(140,1):EndIf
  If GetGadgetState(36) = 1
     SetWindowLongPtr_(WindowID(140),#GWL_EXSTYLE,#WS_EX_LAYERED)
     SetLayeredWindowAttributes_(WindowID(140), 0, GetGadgetState(144), #LWA_ALPHA)
  Else
     SetWindowLongPtr_(WindowID(140),#GWL_EXSTYLE,#WS_EX_LAYERED)
     SetLayeredWindowAttributes_(WindowID(140), 0,255, #LWA_ALPHA)
  EndIf
  If GetGadgetState(42) = 1
    SetWindowLongPtr_(WindowID(140), #GWL_STYLE, GetWindowLongPtr_(WindowID(140), #GWL_STYLE) | #WS_DLGFRAME)
    SetWindowPos_(WindowID(140), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
  EndIf
EndProcedure

Procedure fentest()
If IsWindow(140)<>0:CloseWindow(140):EndIf
If Ftyp = 0 ;fenetre départ
   OpenWindow(140,720,75,660,250,"Ma Fenêtre",opt1|opt2|opt3|opt4)
EndIf
If GetGadgetState(47) = 1 Or GetGadgetState(48) = 1
   Y = 0
Else
   Y = GetGadgetState(103)
EndIf 
X = GetGadgetState(102):larg = GetGadgetState(104):haut = GetGadgetState(105)
If Ftyp = 1 ;fenetre avec attributs standard
   If GetGadgetState(24) = 1;pour fen tool
     OpenWindow(140,X,Y,larg,haut,GetGadgetText(101),#PB_Window_SystemMenu|#PB_Window_Tool|opt4)
   EndIf
   If GetGadgetState(27) = 1;pour fen BorderLess
     OpenWindow(140,X,Y,larg,haut,GetGadgetText(101),#PB_Window_BorderLess|opt4)
   EndIf
   If GetGadgetState(24) = 0 And GetGadgetState(27) = 0
    OpenWindow(140,X,Y,larg,Haut,GetGadgetText(101),opt1|opt2|opt3|opt4)
   EndIf 
EndIf
If Ftyp = 2;fenêtre avec dim automatique
  If GetGadgetState(49) <> 1:SetGadgetState(103,0):EndIf;pour mettre la Y a 0 dans le cas barre visible, haut maxi, plein ecr
  If GetGadgetState(46) = 1;pour plein écran
    X = 0:Y = 0:larg = #Ldef :haut = #Hdef
    SetGadgetState(102,0):SetGadgetState(103,0):SetGadgetState(104,larg):SetGadgetState(105,haut)
  EndIf
  If GetGadgetState(24) = 1;pour fen tool
    MLD_openfen(140,X,Y,larg,haut,GetGadgetText(101),#PB_Window_SystemMenu,#PB_Window_Tool,opt3.l,opt4.l,typH.b)
  EndIf 
  If GetGadgetState(27) = 1;pour fen BorderLess
    MLD_openfen(140,X,Y,larg,haut,GetGadgetText(101),#PB_Window_BorderLess,opt2.l,opt3.l,opt4.l,typH.b)
  EndIf 
  If GetGadgetState(24) = 0 And GetGadgetState(27) = 0
    MLD_openfen(140,X,Y,larg,Haut,GetGadgetText(101),opt1.l,opt2.l,opt3.l,opt4.l,typH.b)
  EndIf
  If GetGadgetState(49) = 1 Or GetGadgetState(46) = 1
    GetGadgetState(105)
  Else 
    SetGadgetState(105,Hw(H.d,typH.b))
  EndIf 
EndIf
StickyWindow(140,1)
SetActiveWindow(1)
EndProcedure

Procedure EnrDim()
If GetGadgetState(27) = 1:pf$ = "1": Else :pf$ = "0":EndIf
If GetGadgetState(45) = 1:auto$ = "1": Else :auto$ = "0":EndIf
If GetGadgetState(28) = 1:scre$ = "1": Else :scre$ = "0":EndIf
CreateFile(151,"Dims_AutoGad")
  WDim$ = GetGadgetText(102) + "," + GetGadgetText(103) + "," + GetGadgetText(104) + "," + GetGadgetText(105) + "," + pf$ + ","+ auto$ + ","+ scre$ + ","
  FileSeek(151, Lof(151))           
  WriteString(151,WDim$)
CloseFile(151)
EndProcedure

Procedure enrmod()
Ec1$ = GetGadgetText(100) + "¤" + GetGadgetText(101)+ "¤" + GetGadgetText(73)+ "¤" + GetGadgetText(74)+ "¤" + GetGadgetText(75)
Ec1$ = Ec1$ + "¤" + GetGadgetText(76)+ "¤" + GetGadgetText(78)+ "¤" + GetGadgetText(102)+ "¤" + GetGadgetText(103)
Ec1$ = Ec1$ + "¤" + GetGadgetText(104)+ "¤" + GetGadgetText(105)
For X = 18 To 50
   Select X
     Case 18 To 28
       If GetGadgetState(X) = 1:Ec1$ = Ec1$ + "¤" + Str(X)+ ",1":Else:Ec1$ = Ec1$ + "¤" + Str(X)+ ",0":EndIf
     Case 32,33,35,36,38 To 43
       If GetGadgetState(X) = 1:Ec1$ = Ec1$ + "¤" + Str(X)+ ",1":Else:Ec1$ = Ec1$ + "¤" + Str(X)+ ",0":EndIf
     Case 45 To 50
       If GetGadgetState(X) = 1:Ec1$ = Ec1$ + "¤" + Str(X)+ ",1":Else:Ec1$ = Ec1$ + "¤" + Str(X)+ ",0":EndIf
   EndSelect
Next
Ec1$ = Ec1$ + "¤"
CreateFile(150,GetGadgetText(101)+".Fmod")
  WriteStringN(150,Ec1$)
CloseFile(150)
EndProcedure

Procedure conver(wmod$,ind,t)
  If t =1
   act.i = Val(Left(StringField(wmod$,ind,"¤"),2))
   ProcedureReturn act.i
  Else
   Et = Val(Right(StringField(wmod$,ind,"¤"),1))
   ProcedureReturn Et
  EndIf
EndProcedure 

Procedure lectmod(mod$)
ReadFile(150,mod$) 
wmod$ = ReadString(150)
CloseFile(150)
act.i = conver(wmod$,12,1)
Et = conver(wmod$,12,2)
For z = 12 To 13 ;Enum et ID
   If conver(wmod$,z,2) <> 0
     SetGadgetText(100,StringField(wmod$,1,"¤")):SetGadgetText(101,StringField(wmod$,2,"¤")):Interaction(conver(wmod$,z,1))
   EndIf
Next
For z = 14 To 21;attributs
   If conver(wmod$,z,2) = 0
     MLD_ActCoche(conver(wmod$,z,1),0):Interaction(conver(wmod$,z,1))
   Else
     MLD_ActCoche(conver(wmod$,z,1),1):Interaction(conver(wmod$,z,1))
   EndIf
Next
If conver(wmod$,24,2) = 0;couleur
   MLD_ActCoche(conver(wmod$,24,1),0):Interaction(conver(wmod$,24,1))
Else
   MLD_ActCoche(conver(wmod$,24,1),1)
   SetGadgetState(141,Val(StringField(wmod$,3,"¤"))):SetGadgetState(142,Val(StringField(wmod$,4,"¤")))
   SetGadgetState(143,Val(StringField(wmod$,5,"¤"))):Interaction(conver(wmod$,24,1))
EndIf
If conver(wmod$,26,2) = 0;transparence
  MLD_ActCoche(conver(wmod$,26,1),0):Interaction(conver(wmod$,26,1))
Else 
  MLD_ActCoche(conver(wmod$,26,1),1):SetGadgetState(144,Val(StringField(wmod$,7,"¤"))):Interaction(conver(wmod$,26,1))
EndIf
If conver(wmod$,22,2) = 0:MLD_ActCoche(conver(wmod$,22,1),0):Else:MLD_ActCoche(conver(wmod$,22,1),1):EndIf:Interaction(conver(wmod$,22,1));screencentered
If conver(wmod$,23,2) = 0:MLD_ActCoche(conver(wmod$,23,1),0):Else:MLD_ActCoche(conver(wmod$,23,1),1):EndIf:Interaction(conver(wmod$,23,1));invisible dans la barre de tache
If conver(wmod$,25,2) = 0:MLD_ActCoche(conver(wmod$,25,1),0):Else:MLD_ActCoche(conver(wmod$,25,1),1):EndIf:Interaction(conver(wmod$,25,1));StickyWindow
If conver(wmod$,33,2) = 0:MLD_ActCoche(conver(wmod$,33,1),0):Else:MLD_ActCoche(conver(wmod$,33,1),1):EndIf:Interaction(conver(wmod$,33,1));dim auto
If conver(wmod$,34,2) = 0;plein écran
  MLD_ActCoche(conver(wmod$,34,1),0)
Else
  MLD_ActCoche(45,1):MLD_ActCoche(conver(wmod$,34,1),1):Interaction(conver(wmod$,34,1))
EndIf
If conver(wmod$,36,2) = 0;Hauteur max
   MLD_ActCoche(conver(wmod$,36,1),0):Interaction(conver(wmod$,36,1))
Else
  MLD_ActCoche(45,1):MLD_ActCoche(conver(wmod$,36,1),1):Interaction(conver(wmod$,36,1))
EndIf
If conver(wmod$,35,2) = 0;Barre de tache visible
  MLD_ActCoche(conver(wmod$,35,1),0)
Else
  MLD_ActCoche(45,1):MLD_ActCoche(conver(wmod$,35,1),1):Interaction(conver(wmod$,35,1))
EndIf
If conver(wmod$,38,2) = 0:MLD_ActCoche(conver(wmod$,38,1),0):Else:MLD_ActCoche(conver(wmod$,38,1),1):EndIf:Interaction(conver(wmod$,38,1));fenetre secondaire
If conver(wmod$,31,2) = 0:MLD_ActCoche(conver(wmod$,31,1),0):Else:MLD_ActCoche(conver(wmod$,31,1),1):EndIf:Interaction(conver(wmod$,31,1));fen bord cadre
If conver(wmod$,32,2) = 0:MLD_ActCoche(conver(wmod$,32,1),0):Else:MLD_ActCoche(conver(wmod$,32,1),1):EndIf:Interaction(conver(wmod$,32,1));dépl fen bord
If conver(wmod$,27,2) = 0:MLD_ActCoche(conver(wmod$,27,1),0):Else:MLD_ActCoche(conver(wmod$,27,1),1):EndIf:Interaction(conver(wmod$,27,1));bcl mini
If conver(wmod$,28,2) = 0:MLD_ActCoche(conver(wmod$,28,1),0):Else:MLD_ActCoche(conver(wmod$,28,1),1):EndIf:Interaction(conver(wmod$,28,1));bcl std1
If conver(wmod$,29,2) = 0:MLD_ActCoche(conver(wmod$,29,1),0):Else:MLD_ActCoche(conver(wmod$,29,1),1):EndIf:Interaction(conver(wmod$,29,1));bcl std2
If conver(wmod$,30,2) = 0:MLD_ActCoche(conver(wmod$,30,1),0):Else:MLD_ActCoche(conver(wmod$,30,1),1):EndIf:Interaction(conver(wmod$,30,1));bcl std2
SetGadgetState(102,Val(StringField(wmod$,8,"¤"))):Interaction(102):SetGadgetState(103,Val(StringField(wmod$,9,"¤"))):Interaction(103);X,Y
SetGadgetState(104,Val(StringField(wmod$,10,"¤"))):Interaction(104):SetGadgetState(105,Val(StringField(wmod$,11,"¤"))):Interaction(105);L,H
dlect = 1
EndProcedure 

Procedure fen2(Fc.b)
Xf2 = WindowX(1) + (WindowWidth(1)-200)/2:Yf2 = WindowY(1)+200
MLD_openfen(200,Xf2,Yf2,200,100,"",#PB_Window_BorderLess,#NUL,#NUL,#NUL,0)
SetWindowColor(200,$A7BAD2)
StickyWindow(200,1)
SetWindowLongPtr_(WindowID(200),#GWL_HWNDPARENT,FindWindow_(0,"program manager"))
SetWindowLongPtr_(WindowID(200), #GWL_STYLE, GetWindowLongPtr_(WindowID(200), #GWL_STYLE) | #WS_DLGFRAME)
SetWindowPos_(WindowID(200), 0,0,0,0,0,#SWP_NOSIZE|#SWP_NOMOVE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
TextGadget(201,X(10),Y(5),X(175),Y(20),"",#ES_CENTER)
EcriEtict(201):SetGadgetColor(201,#PB_Gadget_BackColor,$A7BAD2)
TextGadget(202,X(10),Y(30),X(175),Y(20),GetGadgetText(101),#ES_CENTER)
EcriEtict(202):SetGadgetColor(202,#PB_Gadget_BackColor,$A7BAD2)
HideGadget(202,1)
TextGadget(203,X(10),Y(50),X(175),Y(20),"Ce model existe, il sera modifié",#ES_CENTER)
HideGadget(203,1)
EcriEtict(203):SetGadgetColor(203,#PB_Gadget_BackColor,$A7BAD2):SetGadgetColor(203,#PB_Gadget_FrontColor,$3434D1)
ButtonGadget(204,X(80),Y(72),X(70),Y(20),"Enregistre")
EcriEtict(204):HideGadget(204,1)
ButtonGadget(205,X(150),Y(72),X(40),Y(20),"Stop")
EcriEtict(205)
ListViewGadget(206,X(10),Y(25),X(175),Y(45))
EcriEtict(206):SetGadgetColor(206,#PB_Gadget_BackColor,$98FB98)
HideGadget(206,1)
If ReadFile(150,GetGadgetText(101)+".Fmod") <> 0
     HideGadget(203,0)
EndIf 
If Fc.b = 1;enregistre
   SetGadgetText(201,"Enregistre le model")
   HideGadget(202,0):HideGadget(204,0):HideGadget(206,1)
Else
   SetGadgetText(201,"Faite le choix dun model")
   HideGadget(202,1):HideGadget(204,1):HideGadget(206,0)
   ExamineDirectory(0,GetCurrentDirectory(), "*.Fmod")   
     While NextDirectoryEntry(0)
       AddGadgetItem (206,-1, DirectoryEntryName(0))
     Wend
   FinishDirectory(0)
EndIf 

Repeat
  Event = WaitWindowEvent()
  If Event = #WM_LBUTTONDOWN
    SendMessage_(WindowID(200), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
  EndIf
   If Event = #PB_Event_Gadget
    Select EventGadget()
      Case 204 ;enr
        enrmod()
        CloseWindow(200)
        Break
      Case 206;list
        Select EventType()
          Case #PB_EventType_LeftClick
            If GetGadgetText(206) <> "";si clic sur une ligne vide
             lectmod(GetGadgetText(206))
             CloseWindow(200)
             Break
            EndIf
        EndSelect   
      Case 205;stop
       CloseWindow(200)
       Break
    EndSelect
  EndIf
ForEver
EndProcedure 
;====== fenêtre principale =====
MLD_openfen(1,0,0,525,0,"WinConstructeur_5",#PB_Window_MinimizeGadget,opt2.l,opt3.l,opt4.l,2)
StickyWindow(1,1)
HookMouse = SetWindowsHookEx_(#WH_MOUSE_LL, @MouseHook(), GetModuleHandle_(0), 0)
;====== gadgets Frame3D ========
FrameGadget(2,X(5),Y(5),X(245),Y(60),"Enumération automatique")
FrameGadget(3,X(5),Y(75),X(245),Y(80),"ID de la Fenêtre et titre")
FrameGadget(4,X(255),Y(5),X(265),Y(120),"Attributs de la fenêtre")
FrameGadget(5,X(5),Y(160),X(245),Y(270),"Couleurs et transparence")
FrameGadget(6,X(255),Y(130),X(265),Y(355),"Position - Taille de la fenêtre")
FrameGadget(7,X(5),Y(440),X(245),Y(220),"Options")
FrameGadget(8,X(255),Y(490),X(265),Y(170),"Inclure la Boucle générale")
FrameGadget(9,X(5),Y(660),X(515),Y(60),"Fonctions")
For x = 2 To 9
  EcriEtict(x)
Next 
;====== gadgets case a cocher ========
MLD_Coche(18,X(40),Y(30),X(50),Y(20),"Oui",$CD0000,1)
MLD_Coche(19,X(140),Y(30),X(50),Y(20),"Non",$CD0000,0)
MLD_Coche(20,X(260),Y(23),X(100),Y(20),"Bouton Mini",$CD0000,1)
MLD_Coche(21,X(260),Y(48),X(100),Y(20),"Bouton Maxi",$CD0000,0)
MLD_Coche(22,X(260),Y(73),X(100),Y(20),"Size",$CD0000,0)
MLD_Coche(23,X(400),Y(98),X(75),Y(20),"Invisible",$CD0000,0)
MLD_Coche(24,X(260),Y(98),X(100),Y(20), "Tool",$CD0000,0)
MLD_Coche(25,X(400),Y(48),X(75),Y(20),"Maximize",$CD0000,0)
MLD_Coche(26,X(400),Y(73),X(75),Y(20),"Minimize",$CD0000,0)
MLD_Coche(27,X(400),Y(23),X(75),Y(20),"BorderLess",$CD0000,0)
MLD_Coche(28,X(260),Y(390),X(140),Y(20),"ScreenCentered",$CD0000,0)
MLD_Coche(32,X(15),Y(620),X(190),Y(20),"Invisible dans la barre de Tâche",$CD0000,0)
MLD_Coche(33,X(15),Y(180),X(105),Y(20),"WindowColor",$CD0000,0)
MLD_Coche(35,X(15),Y(470),X(120),Y(20),"StickyWindow",$CD0000,0)
MLD_Coche(36,X(15),Y(350),X(110),Y(20),"Transparence",$CD0000,0)
MLD_Coche(38,X(260),Y(520),X(200),Y(20),"Minimale (Boucle a votre choix)",$CD0000,1)
MLD_Coche(39,X(260),Y(555),X(200),Y(20),"Standard 1 (If, EndIf)",$CD0000,0)
MLD_Coche(40,X(260),Y(590),X(200),Y(20),"Standard 2 (Select,Endselect)",$CD0000,0)
MLD_Coche(41,X(260),Y(627),X(200),Y(20),"Sans fin  (Utile pour Borderless)",$CD0000,0)
GadgetToolTip(41,"Boucle sans fin. Un bouton d'arrêt est obligatoire.(Principale utilisation : fenêtre Borderless.)")
MLD_Coche(42,X(15),Y(520),X(190),Y(20),"Fenêtre BorderLess avec cadre",$CD0000,0)
DG(42,1)
MLD_Coche(43,X(15),Y(570),X(190),Y(20),"Déplace une fenêtre BorderLess",$CD0000,0)
DG(43,1)
MLD_Coche(45,X(260),Y(420),X(182),Y(20),"Dimensions automatique",$1E69D2,0)
MLD_Coche(46,X(260),Y(185),X(120),Y(20),"Plein écran",$CD0000,0)
MLD_Coche(47,X(260),Y(245),X(220),Y(20),"Barre de tâche window visible",$CD0000,0)
MLD_Coche(48,X(260),Y(215),X(220),Y(20),"Hauteur maximum",$CD0000,0)
MLD_Coche(49,X(260),Y(155),X(220),Y(20),"Autres",$CD0000,1)
MLD_Coche(50,X(260),Y(450),X(182),Y(20),"Fenêtre secondaire",$1E69D2,0)
DG(50,1)
For x = 18 To 50
  EcriEtict(x)
Next
;====== gadgets text
TextGadget(60,X(10),Y(98),X(30),Y(20), "ID")
TextGadget(61,X(260),Y(295),X(70),Y(20), "Position  X:")
TextGadget(62,X(435),Y(295),X(20),Y(20), "Y:")
TextGadget(63,X(260),Y(350),X(60),Y(20),"Largeur:")
TextGadget(64,X(400),Y(350),X(55),Y(20),"Hauteur:")
TextGadget(70,X(15),Y(245),X(10),Y(20),"R"):SetGadgetColor(70,#PB_Gadget_FrontColor,$0000C8)
TextGadget(71,X(15),Y(280),X(10),Y(20),"V"):SetGadgetColor(71,#PB_Gadget_FrontColor,$008000)
TextGadget(72,X(15),Y(315),X(10),Y(20),"B"):SetGadgetColor(72,#PB_Gadget_FrontColor,$C80000)
TextGadget(73,X(27),Y(245),X(25),Y(20),"$00")
TextGadget(74,X(27),Y(280),X(25),Y(20),"$00")
TextGadget(75,X(27),Y(315),X(25),Y(20),"$00")
TextGadget(76,X(175),Y(210),X(60),Y(20),"$000000",#ES_CENTER)
TextGadget(77,X(195),Y(250),X(45),Y(85),"",#PB_Text_Border)
TextGadget(78,X(185),Y(370),X(30),Y(20),"255",#ES_CENTER|#PB_Text_Border)
TextGadget(79,X(132),Y(370),X(40),Y(20),"Valeur")
TextGadget(80,X(10),Y(128),X(30),Y(20), "Titre")
For x = 60 To 80
  EcriEtict(x)
Next
;====== Gadget String
StringGadget(100,X(50),Y(95),X(190),Y(22),"#Ma_fen")
SendMessage_(GadgetID(100),#EM_LIMITTEXT,25,0)
cadrestring(100)
Titr$ = "Ma Fenêtre"
StringGadget(101,X(50),Y(125),X(190),Y(22),Titr$)
SendMessage_(GadgetID(101),#EM_LIMITTEXT,25,0)
cadrestring(101)
;====== Gadget Spin
SpinGadget(102,X(330),Y(290),X(60),Y(30),0,5000,#PB_Spin_ReadOnly|#PB_Spin_Numeric)
SpinGadget(103,X(455),Y(290),X(60),Y(30),0,3000,#PB_Spin_ReadOnly|#PB_Spin_Numeric)
SpinGadget(104,X(330),Y(345),X(60),Y(30),5,5000,#PB_Spin_ReadOnly|#PB_Spin_Numeric)
SpinGadget(105,X(455),Y(345),X(60),Y(30),5,3000,#PB_Spin_ReadOnly|#PB_Spin_Numeric)
For x = 100 To 105
  EcriEtict(x):SetGadgetColor(x,#PB_Gadget_BackColor,$00FFFF)
Next
;====== Gadget Bouton
ButtonGadget(123,X(304),Y(680),X(70),Y(30),"Aide")
GadgetToolTip(123,"Aide de ce logiciel")
ButtonGadget(124,X(233),Y(680),X(70),Y(30),"Enrg/ATG")
GadgetToolTip(124,"Enregistre les dimensions de la fenêtre pour AUTOGAD")
ButtonGadget(125,X(10),Y(680),X(70),Y(30),"Copier")
GadgetToolTip(125,"Copie le code dans le presse-papiers.")
ButtonGadget(126,X(81),Y(680),X(70),Y(30),"Enr mod")
GadgetToolTip(126,"Enregistre cette fenêtre comme modèle.")
ButtonGadget(127,X(152),Y(680),X(80),Y(30),"Ouvre mod")
GadgetToolTip(127,"Ouvre un modèle de fenêtre.")
ButtonGadget(128,X(375),Y(680),X(65),Y(30),"Raz")
GadgetToolTip(128,"Remet a zéro WinConstructeur.")
ButtonGadget(129,X(441),Y(680),X(75),Y(30),"Stop")
GadgetToolTip(129,"On termine ici.")
ButtonGadget(130,X(50),Y(206),X(110),Y(24),"ColorRequester");btcolreq
DG(130,1)
For x = 123 To 130
  EcriEtict(x)
Next
;====== Gadget autres
TrackBarGadget(141,X(55),Y(245),X(130),Y(25),0,255)
TrackBarGadget(142,X(55),Y(280),X(130),Y(25),0,255)
TrackBarGadget(143,X(55),Y(315),X(130),Y(25),0,255)
TrackBarGadget(144,X(7),Y(395),X(230),Y(25),50,255)
SetGadgetState(144,255)
EditorGadget(149,X(2),Y(725),X(520),Y(260),#PB_Editor_ReadOnly)
EcriEtict(149)
SetGadgetColor(149,#PB_Gadget_BackColor,$699A14)   

fendepart()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      CloseWindow(1)
      Quit = #True
    Case #PB_Event_Gadget
      Interaction(EventGadget())
     Select EventGadget()
      Case 124 ;bt enrAUTOGAD
        EnrDim()
      Case #Bt_Cop
       ClearClipboard()
       SetClipboardText(GetGadgetText(149))
      Case #Bt_enrmod
        fen2(1)
      Case #Bt_Ouvmod 
        fen2(2)
      Case 128;raz
       Raz() 
      Case 123;bt aide
       MessageRequester("Logiciel Winconstructeur_5",LT$,#PB_MessageRequester_Ok | #PB_MessageRequester_Info)   
      Case 129;bt Stop
        CloseWindow(1)
        Quit = #True
      Case 20 To 36,42,43,50
       If GetGadgetState(EventGadget()) = 0
        MLD_ActCoche(EventGadget(),0)
       Else
        MLD_ActCoche(EventGadget(),1)
       EndIf
      Case 38 To 41;les boucles
        For b = 38 To 41
          MLD_ActCoche(b,0)
        Next
        MLD_ActCoche(EventGadget(),1)
      Case 45 To 49;dimauto en général ou pas
       If GetGadgetState(EventGadget()) = 0
        MLD_ActCoche(EventGadget(),0)
       Else
         MLD_ActCoche(EventGadget(),1)
         MLD_ActCoche(45,1):Interaction(EventGadget())
       EndIf
     Case 102 To 105
       Select EventType()
         Case #PB_EventType_Up,#PB_EventType_Down
           If Ftyp = 1
             ResizeWindow(140,Val(GetGadgetText(102)),Val(GetGadgetText(103)),Val(GetGadgetText(104)),Val(GetGadgetText(105)))
           EndIf
           If Ftyp = 2
            ResizeWindow(140,X(Val(GetGadgetText(102))),Y(Val(GetGadgetText(103))),Lw(Val(GetGadgetText(104))),Hw(Val(GetGadgetText(105)),typH.b));Hw(Dh.d,typH.b)
           EndIf
           Dpspin = 1:construcwin():inscripcode():Dpspin = 0
       EndSelect
     EndSelect
    EndSelect
Until Quit
End



Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Programmation automatique (Winconstructeur)
MessagePosté: Mer 04/Déc/2019 21:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 25/Avr/2008 11:14
Messages: 1405
bsr MLD
beau travail, ton éditeur de fenêtres est cool
J'en suis très heureux!! :D
Merci pour le partage de tout ce travail

cordialement


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Programmation automatique (Winconstructeur)
MessagePosté: Jeu 05/Déc/2019 9:47 
Hors ligne

Inscription: Jeu 05/Fév/2009 17:58
Messages: 980
@kernadec
Merçi. Si tu vois une amélioration possible ou un bug, n’hésite pas.
A+
Michel


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 10 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 à:  
cron

 


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