*--------------------------------------------------------------------------------------------------------------------------------------------------------
* (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!!
*--------------------------------------------------------------------------------------------------------------------------------------------------------
*< FOXBIN2PRG: Version="1.21" SourceFile="gridtreeview.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries)
*
*
DEFINE CLASS afficherniveau AS container
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="CmdN0" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="CmdN1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="CmdN2" UniqueID="" Timestamp="" />
*
*m: afficherniveau
*p: ogrid
*
*
BorderWidth = 0
Height = 14
Name = "afficherniveau"
Width = 43
*
ADD OBJECT 'CmdN0' AS commandbutton WITH ;
Caption = "0", ;
FontSize = 8, ;
Height = 14, ;
Left = 0, ;
Name = "CmdN0", ;
Top = 0, ;
Width = 13
*< END OBJECT: BaseClass="commandbutton" />
ADD OBJECT 'CmdN1' AS commandbutton WITH ;
Caption = "1", ;
FontSize = 8, ;
Height = 14, ;
Left = 15, ;
Name = "CmdN1", ;
Top = 0, ;
Width = 13
*< END OBJECT: BaseClass="commandbutton" />
ADD OBJECT 'CmdN2' AS commandbutton WITH ;
Caption = "2", ;
FontSize = 8, ;
Height = 14, ;
Left = 30, ;
Name = "CmdN2", ;
Top = 0, ;
Width = 13
*< END OBJECT: BaseClass="commandbutton" />
PROCEDURE afficherniveau
LPARAMETERS nNiveau
UPDATE (This.oGrid.recordSource) ;
SET visible=(niveau<=nNiveau),;
expanded=IIF(niveau
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="ColumnTV.HeaderTV" UniqueID="" Timestamp="" />
#INCLUDE "gridtreeview.h"
*
*m: dynamic
*m: nodeclick
*p: niveau0
*p: niveau1
*p: niveau2
*p: nrecno
*
*
AllowHeaderSizing = .F.
AllowRowSizing = .F.
ColumnCount = 1
DeleteMark = .F.
GridLineColor = 128,128,128
GridLines = 3
Height = 345
Highlight = .F.
HighlightRow = .F.
Name = "gridtreeview"
nrecno = 0
Panel = 1
RecordMark = .F.
RowHeight = 20
ScrollBars = 2
Width = 383
Column1.ControlSource = ""
Column1.Name = "ColumnTV"
Column1.ReadOnly = .T.
Column1.Sparse = .F.
Column1.Visible = .T.
Column1.Width = 135
*
ADD OBJECT 'ColumnTV.HeaderTV' AS header WITH ;
Caption = "Clé", ;
Name = "HeaderTV"
*< END OBJECT: BaseClass="header" />
PROCEDURE AfterRowColChange
LPARAMETERS nColIndex
this.nRecno=Recno(this.RecordSource)
thisform.lockScreen= .T.
this.columntv.Refresh
thisform.lockScreen= .f.
ENDPROC
PROCEDURE Destroy
SELECT (this.RecordSource)
SET FILTER to
ENDPROC
PROCEDURE dynamic
WITH Evaluate("this.columnTV."+ Evaluate(this.columnTV.dynamicCurrentControl)+".text1")
IF Recno(this.RecordSource)=this.nRecno
.disabledBackColor=Rgb(10,36,106)
.DisabledForeColor=Rgb(255,255,255)
ELSE
.disabledBackColor=Rgb(255,255,255)
.resetToDefault("DisabledForeColor")
ENDIF
ENDWITH
RETURN Rgb(255,255,255)
ENDPROC
PROCEDURE Init
thisform.lockScreen = .t.
SELECT (this.recordsource)
SET FILTER TO visible
GO top
WITH this.columnTV
IF VARTYPE(.text1)="O"
.RemoveObject("text1")
ENDIF
SET CLASSLIB TO (_GridTreeViewVCX) additive
.AddObject("niveau0","niveau")
.AddObject("niveau0p","niveau")
.AddObject("niveau0m","niveau")
.AddObject("niveau1","niveau1")
.AddObject("niveau1p","niveau1")
.AddObject("niveau1m","niveau1")
.AddObject("niveau2","niveau2")
CLEAR CLASSLIB _GridTreeViewVCX
STORE JUSTPATH(_GridTreeViewVCX)+"\leaf.bmp" ;
TO .niveau0.image.picture, ;
.niveau1.image.picture ,;
.niveau2.image.picture
STORE JUSTPATH(_GridTreeViewVCX)+"\open.bmp" ;
TO .niveau0m.image.picture, ;
.niveau1m.image.picture
STORE JUSTPATH(_GridTreeViewVCX)+"\closed.bmp" ;
TO .niveau0p.image.picture, ;
.niveau1p.image.picture
STORE JUSTPATH(_GridTreeViewVCX)+"\minus.bmp" ;
TO .niveau0m.plusMoins.picture, ;
.niveau1m.plusMoins.picture
STORE JUSTPATH(_GridTreeViewVCX)+"\plus.bmp" ;
TO .niveau0p.plusMoins.picture, ;
.niveau1p.plusMoins.picture
STORE .t. ;
TO .niveau0m.plusMoins.visible, ;
.niveau0p.plusMoins.visible ,;
.niveau1m.plusMoins.visible, ;
.niveau1p.plusMoins.visible
.DynamicCurrentControl = ["Niveau"+str(]+.parent.RecordSource+[.niveau,1)+chrtran(]+.parent.RecordSource+[.expanded,"ON ","mp")]
.DynamicBackColor=[this.dynamic()]
ENDWITH
thisform.lockScreen = .f.
ENDPROC
PROCEDURE nodeclick
LOCAL niveau, cExpanded, key
SELECT (this.recordSource)
cExpanded = ALLTRIM(expanded)
IF NOT EMPTY(expanded)
thisform.LockScreen = .T.
m.key = EVALUATE(KEY())
IF expanded="O"
replace expanded WITH "N"
SKIP
REPLACE visible WITH .f. while LIKE(TRIM(m.key) + '*', EVALUATE(KEY()))
ELSE
SET FILTER TO
replace expanded WITH "O"
m.niveau = niveau
SKIP
SCAN REST WHILE LIKE(TRIM(m.key) + '*', EVALUATE(KEY()))
IF niveau = m.niveau + 1
replace visible with .t.
cExpanded = Expanded
ELSE
IF m.cExpanded="O"
replace visible with .t.
ENDIF
ENDIF
ENDSCAN
ENDIF
SEEK m.key
SET FILTER TO visible
This.columnTV.dynamicCurrentControl=This.columnTV.dynamicCurrentControl
this.refresh
thisform.LockScreen = .f.
ENDIF
ENDPROC
ENDDEFINE
DEFINE CLASS niveau AS container
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="Text1" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="Image" UniqueID="" Timestamp="" />
*< OBJECTDATA: ObjPath="PlusMoins" UniqueID="" Timestamp="" />
*
BackStyle = 0
BorderWidth = 0
Height = 24
Name = "niveau"
Width = 361
*
ADD OBJECT 'Image' AS image WITH ;
Height = 17, ;
Left = 18, ;
Name = "Image", ;
Top = 2, ;
Width = 17
*< END OBJECT: BaseClass="image" />
ADD OBJECT 'PlusMoins' AS image WITH ;
Height = 17, ;
Left = 1, ;
Name = "PlusMoins", ;
Top = 2, ;
Visible = .F., ;
Width = 17
*< END OBJECT: BaseClass="image" />
ADD OBJECT 'Text1' AS textbox WITH ;
BackStyle = 1, ;
BorderStyle = 0, ;
DisabledBackColor = 255,255,255, ;
DisabledForeColor = 0,0,0, ;
Enabled = .F., ;
FontBold = .T., ;
Height = 21, ;
Left = 33, ;
Name = "Text1", ;
ReadOnly = .T., ;
SpecialEffect = 1, ;
Top = 0, ;
Width = 327
*< END OBJECT: BaseClass="textbox" />
PROCEDURE DblClick
this.parent.parent.nodeClick
ENDPROC
PROCEDURE Image.DblClick
this.parent.parent.parent.nodeClick
ENDPROC
PROCEDURE PlusMoins.MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
IF nButton=1
this.parent.parent.parent.nodeClick
ENDIF
ENDPROC
PROCEDURE Text1.DblClick
this.parent.parent.parent.nodeClick
ENDPROC
PROCEDURE Text1.Init
this.controlSource = this.parent.parent.parent.niveau0
ENDPROC
ENDDEFINE
DEFINE CLASS niveau1 AS niveau OF "gridtreeview.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="LineV" UniqueID="" Timestamp="" />
*
Height = 21
Name = "niveau1"
Text1.FontBold = .F.
Text1.Height = 20
Text1.Left = 58
Text1.Name = "Text1"
Text1.Top = 0
Text1.Width = 301
Text1.ZOrderSet = 0
Image.Height = 17
Image.Left = 42
Image.Name = "Image"
Image.Top = 2
Image.Width = 15
PlusMoins.Left = 26
PlusMoins.Name = "PlusMoins"
PlusMoins.Top = 2
*
ADD OBJECT 'LineV' AS line WITH ;
BorderColor = 128,128,128, ;
BorderWidth = 3, ;
Height = 27, ;
Left = 8, ;
Name = "LineV", ;
Top = -2, ;
Width = 0, ;
ZOrderSet = 1
*< END OBJECT: BaseClass="line" />
PROCEDURE Text1.Init
this.controlSource = this.parent.parent.parent.niveau1
ENDPROC
ENDDEFINE
DEFINE CLASS niveau2 AS niveau1 OF "gridtreeview.vcx"
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
*< OBJECTDATA: ObjPath="Line2V" UniqueID="" Timestamp="" />
*
Height = 21
Name = "niveau2"
Text1.DisabledForeColor = 128,128,128
Text1.FontBold = .T.
Text1.ForeColor = 128,128,128
Text1.Height = 20
Text1.Left = 80
Text1.Name = "Text1"
Text1.Top = 0
Text1.Width = 268
Text1.ZOrderSet = 0
LINEV.Name = "LINEV"
LINEV.ZOrderSet = 1
Image.Left = 64
Image.Name = "Image"
Image.Top = 2
PlusMoins.Left = 48
PlusMoins.Name = "PlusMoins"
PlusMoins.Top = 2
*
ADD OBJECT 'Line2V' AS line WITH ;
BorderColor = 192,192,192, ;
BorderWidth = 3, ;
Height = 20, ;
Left = 33, ;
Name = "Line2V", ;
Top = 0, ;
Width = 0, ;
ZOrderSet = 2
*< END OBJECT: BaseClass="line" />
PROCEDURE Text1.Init
this.controlSource = this.parent.parent.parent.niveau2
ENDPROC
ENDDEFINE