Programmation automatique (Winconstructeur)

Programmation d'applications complexes
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Programmation automatique (Winconstructeur)

Message par MLD »

Suite

Code : Tout sélectionner

;*****************************************************
; 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

Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Programmation automatique (Winconstructeur)

Message par kernadec »

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
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Programmation automatique (Winconstructeur)

Message par MLD »

@kernadec
Merçi. Si tu vois une amélioration possible ou un bug, n’hésite pas.
A+
Michel
Répondre