Code : Tout sélectionner
;Author: Mischa / ts-soft for Library Purpose
Procedure gDesignInit()
Static init.l
Structure gdescontent
id.l
number.w
x.l
y.l
w.l
h.l
para1.l
para2.l
para3.l
flags.l
typ.l
wtext.s
gpo.l
EndStructure
If init=0
Global gDesValue.gdescontent
NewList gDesParent.l()
Dim gDesignTyp.b(24)
Restore gdestyp : For i=1 To 24 : Read gDesignTyp(i) : Next i
init=1
EndIf
DataSection
gdestyp: Data.b 3,0,3,2,2,3,3,3,3,3,2,7,0,1,0,14,30,30,12,3,3,14,2,1
EndDataSection
EndProcedure
Procedure ReCreateObject()
Select gDesValue\typ
Case 1:gDesValue\id=ButtonGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 2:gDesValue\id=ButtonImageGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,0)
Case 3:gDesValue\id=CheckBoxGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 4:gDesValue\id=ComboBoxGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags)
Case 5:gDesValue\id=EditorGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags)
Case 6:gDesValue\id=ExplorerComboGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 7:gDesValue\id=ExplorerListGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 8:gDesValue\id=ExplorerTreeGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 9:gDesValue\id=Frame3DGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 10:gDesValue\id=HyperLinkGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 11:gDesValue\id=ImageGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,0,gDesValue\flags)
Case 12:gDesValue\id=ListIconGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\para1,gDesValue\flags)
Case 13:gDesValue\id=ListViewGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h)
Case 14:gDesValue\id=OptionGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext)
Case 15:gDesValue\id=PanelGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h)
Case 16:gDesValue\id=ProgressBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\flags)
Case 17:gDesValue\id=ScrollAreaGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\para3,gDesValue\flags)
Case 18:gDesValue\id=ScrollBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\para3,gDesValue\flags)
Case 19:gDesValue\id=SpinGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2)
Case 20:gDesValue\id=StringGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 21:gDesValue\id=TextGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 22:gDesValue\id=TrackBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\flags)
Case 23:gDesValue\id=TreeGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags)
Case 24:gDesValue\id=WebGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext)
EndSelect
EndProcedure
ProcedureDLL gDesignClientWidth(*gdata)
ProcedureReturn PeekL(*gdata+4)
EndProcedure
ProcedureDLL gDesignClientHeight(*gdata)
ProcedureReturn PeekL(*gdata+8)
EndProcedure
ProcedureDLL gDesignMaxItem(*gdata)
gDesignInit()
ProcedureReturn PeekL(*gdata)-1
EndProcedure
ProcedureDLL gDesign(*gdata,*gitems,goffx,goffy)
gcount=PeekL(*gdata+12):gDesValue\gpo=16
For i=1 To gcount
gDesValue\typ=PeekB(*gdata+gDesValue\gpo):gDesValue\gpo+1
gDesValue\number=PeekW(*gdata+gDesValue\gpo):gDesValue\gpo+2
If gDesValue\typ=100
ptext.s=PeekS(*gdata+gDesValue\gpo):gDesValue\gpo+Len(ptext)+1
AddGadgetItem(gDesParent(),-1,ptext)
ElseIf gDesValue\typ=0
CloseGadgetList()
DeleteElement(gDesParent())
Else
gDesValue\x=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
gDesValue\y=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
gDesValue\w=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
gDesValue\h=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
If gDesignTyp(gDesValue\typ) & 1
gDesValue\wtext=PeekS(*gdata+gDesValue\gpo):gDesValue\gpo+Len(gDesValue\wtext)+1
EndIf
If gDesignTyp(gDesValue\typ) & 2
gDesValue\flags=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
EndIf
If gDesignTyp(gDesValue\typ) & 4
gDesValue\para1=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
EndIf
If gDesignTyp(gDesValue\typ) & 8
gDesValue\para2=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
EndIf
If gDesignTyp(gDesValue\typ) & 16
gDesValue\para3=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
EndIf
If CountList(gDesParent())=0
gDesValue\x+goffx
gDesValue\y+goffy
EndIf
ReCreateObject()
PokeL(*gitems+gDesValue\number*4,gDesValue\id)
If gDesValue\typ=15
AddElement(gDesParent())
gDesParent()=gDesValue\id
ElseIf gDesValue\typ=17
AddElement(gDesParent())
gDesParent()=gDesValue\id
EndIf
EndIf
Next
ClearList(gDesParent())
While WindowEvent():Wend
EndProcedure
Plus besoin de lancer gDesignInit, c'est automatiquement initialisé quand on lance gDesignMaxItem