375 lines
11 KiB
Plaintext
375 lines
11 KiB
Plaintext
*--------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
* (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 element AS _container OF "..\..\clase\_baza.vcx"
|
|
*< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="imagine1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="imagine2" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="explicatie" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="nivel" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: do_aranjeaza && Aranjeaza obiectele din container in functie de nivel.
|
|
*m: nodeclick
|
|
*p: cexplicatie && Numele campului care contine explicatia.
|
|
*p: nexplicatie
|
|
*p: nimagine1
|
|
*p: nimagine2
|
|
*p: ntip && 0 - nod neterminal, 1 - nod terminal
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
Anchor = 10
|
|
BorderWidth = 0
|
|
cexplicatie =
|
|
Height = 24
|
|
Name = "element"
|
|
nexplicatie = 0
|
|
nimagine1 = 0
|
|
nimagine2 = 0
|
|
ntip = 0
|
|
Width = 400
|
|
_memberdata = <VFPData>
|
|
<memberdata name="cexplicatie" type="Property" favorites="True"/>
|
|
<memberdata name="nexplicatie" type="Property" favorites="True"/>
|
|
<memberdata name="nimagine1" type="Property" favorites="True"/>
|
|
<memberdata name="nimagine2" type="Property" favorites="True"/>
|
|
<memberdata name="ntip" type="Property" favorites="True"/>
|
|
</VFPData>
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'explicatie' AS _txbase WITH ;
|
|
Anchor = 10, ;
|
|
BackStyle = 0, ;
|
|
BorderStyle = 0, ;
|
|
DisabledBackColor = 255,255,255, ;
|
|
DisabledForeColor = 0,0,0, ;
|
|
Enabled = .F., ;
|
|
FontBold = .T., ;
|
|
Height = 21, ;
|
|
Left = 33, ;
|
|
Name = "explicatie", ;
|
|
ReadOnly = .T., ;
|
|
SpecialEffect = 1, ;
|
|
Top = 0, ;
|
|
Width = 375
|
|
*< END OBJECT: ClassLib="..\..\clase\_tx_base.vcx" BaseClass="textbox" />
|
|
|
|
ADD OBJECT 'imagine1' AS _image WITH ;
|
|
BackStyle = 0, ;
|
|
Left = 1, ;
|
|
Name = "imagine1", ;
|
|
Top = 2, ;
|
|
Visible = .F., ;
|
|
Width = 17
|
|
*< END OBJECT: ClassLib="..\..\clase\_baza.vcx" BaseClass="image" />
|
|
|
|
ADD OBJECT 'imagine2' AS _image WITH ;
|
|
BackStyle = 0, ;
|
|
Left = 18, ;
|
|
Name = "imagine2", ;
|
|
Top = 2, ;
|
|
Width = 17
|
|
*< END OBJECT: ClassLib="..\..\clase\_baza.vcx" BaseClass="image" />
|
|
|
|
ADD OBJECT 'nivel' AS _txbase WITH ;
|
|
Alignment = 3, ;
|
|
Anchor = 10, ;
|
|
ControlSource = "nivel", ;
|
|
Enabled = .F., ;
|
|
Height = 21, ;
|
|
Left = 352, ;
|
|
Name = "nivel", ;
|
|
ReadOnly = .T., ;
|
|
SpecialEffect = 1, ;
|
|
Top = 0, ;
|
|
Value = 1, ;
|
|
Visible = .F., ;
|
|
Width = 48
|
|
*< END OBJECT: ClassLib="..\..\clase\_tx_base.vcx" BaseClass="textbox" />
|
|
|
|
PROCEDURE DblClick
|
|
This.nodeClick()
|
|
ENDPROC
|
|
|
|
PROCEDURE do_aranjeaza && Aranjeaza obiectele din container in functie de nivel.
|
|
lnNivel = This.nivel.Value
|
|
This.imagine1.Left = This.nimagine1 + 15 * lnNivel
|
|
This.imagine2.Left = This.nimagine2 + 15 * lnNivel
|
|
This.explicatie.Left = This.nexplicatie + 15 * lnNivel
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
Lparameters tnTip,tcExplicatie
|
|
*!* tnTip
|
|
*!* 0 - frunza
|
|
*!* 1 - inchis
|
|
*!* 2 - deschis
|
|
Local lnTip
|
|
lnTip = Nvl(tnTip,0)
|
|
With This
|
|
.ntip = lnTip
|
|
.cExplicatie = Iif(Empty(Nvl(tcExplicatie,[])),[explicatie],tcExplicatie)
|
|
Do Case
|
|
Case .ntip = 2
|
|
.imagine1.Picture = [GTV_MINUS.bmp]
|
|
.imagine1.Visible = .T.
|
|
.imagine2.Picture = [GTV_DESCHIS.bmp]
|
|
Case .ntip = 1
|
|
.imagine1.Picture = [GTV_PLUS.bmp]
|
|
.imagine1.Visible = .T.
|
|
.imagine2.Picture = [GTV_INCHIS.bmp]
|
|
Otherwise
|
|
.imagine2.Picture = [GTV_FRUNZA.bmp]
|
|
Endcase
|
|
|
|
.nimagine1 = .imagine1.Left
|
|
.nimagine2 = .imagine2.Left
|
|
.nexplicatie = .explicatie.Left
|
|
|
|
.explicatie.ControlSource = .cExplicatie
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE nodeclick
|
|
If This.ntip <> 0
|
|
This.Parent.Parent.nodeclick()
|
|
Endif
|
|
ENDPROC
|
|
|
|
PROCEDURE explicatie.DblClick
|
|
This.Parent.nodeClick
|
|
ENDPROC
|
|
|
|
PROCEDURE imagine1.MouseDown
|
|
Lparameters nButton, nShift, nXCoord, nYCoord
|
|
If nButton=1
|
|
This.Parent.nodeClick
|
|
Endif
|
|
ENDPROC
|
|
|
|
PROCEDURE imagine2.DblClick
|
|
This.Parent.nodeClick
|
|
ENDPROC
|
|
|
|
PROCEDURE nivel.DblClick
|
|
This.Parent.nodeclick()
|
|
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|
|
|
|
DEFINE CLASS gridtreeview AS _grdbase OF "..\..\clase\_grd_base.vcx"
|
|
*< CLASSDATA: Baseclass="grid" Timestamp="" Scale="Pixels" Uniqueid="" />
|
|
|
|
*-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder
|
|
*< OBJECTDATA: ObjPath="ColumnTV.Header1" UniqueID="" Timestamp="" />
|
|
*< OBJECTDATA: ObjPath="ColumnTV.Text1" UniqueID="" Timestamp="" />
|
|
|
|
*<DefinedPropArrayMethod>
|
|
*m: do_initializeaza
|
|
*m: dynamic
|
|
*m: nodeclick
|
|
*p: cexplicatie && Denumirea campului care contine explicatia.
|
|
*p: cid && Denumirea campului care contine id-ul.
|
|
*p: crgbbackcolor
|
|
*p: cseparator && Caracterul / caracterele folosite ca separator pentru campul tata.
|
|
*p: ldeschise && .T. daca toate ramurile sunt deschise, .F. daca sunt inchise
|
|
*p: nrecno
|
|
*p: _memberdata && XML Metadata for customizable properties
|
|
*</DefinedPropArrayMethod>
|
|
|
|
*<PropValue>
|
|
AllowHeaderSizing = .F.
|
|
AllowRowSizing = .F.
|
|
cexplicatie =
|
|
cid =
|
|
ColumnCount = 1
|
|
crgbbackcolor = 255,255,255
|
|
cseparator =
|
|
DeleteMark = .F.
|
|
FontName = "Arial Narrow"
|
|
GridLineColor = 128,128,128
|
|
Highlight = .F.
|
|
HighlightStyle = 1
|
|
Name = "gridtreeview"
|
|
nrecno = 0
|
|
RecordMark = .F.
|
|
_memberdata = <VFPData>
|
|
<memberdata name="cexplicatie" type="Property" favorites="True"/>
|
|
<memberdata name="cid" type="Property" favorites="True"/>
|
|
<memberdata name="cseparator" type="Property" favorites="True"/>
|
|
</VFPData>
|
|
Column1.FontName = "Arial Narrow"
|
|
Column1.Name = "ColumnTV"
|
|
Column1.ReadOnly = .T.
|
|
Column1.Sparse = .F.
|
|
Column1.Width = 150
|
|
*</PropValue>
|
|
|
|
ADD OBJECT 'ColumnTV.Header1' AS header WITH ;
|
|
Alignment = 2, ;
|
|
Caption = "Header1", ;
|
|
FontName = "Arial Narrow", ;
|
|
Name = "Header1"
|
|
*< END OBJECT: BaseClass="header" />
|
|
|
|
ADD OBJECT 'ColumnTV.Text1' AS textbox WITH ;
|
|
BackColor = 255,255,255, ;
|
|
BorderStyle = 0, ;
|
|
FontName = "Arial Narrow", ;
|
|
ForeColor = 0,0,0, ;
|
|
Margin = 0, ;
|
|
Name = "Text1", ;
|
|
ReadOnly = .T.
|
|
*< END OBJECT: BaseClass="textbox" />
|
|
|
|
PROCEDURE AfterRowColChange
|
|
Lparameters nColIndex
|
|
If Inlist(This.RowColChange,0,1,3)
|
|
This.nRecno=Recno(This.RecordSource)
|
|
This.Refresh
|
|
Endif
|
|
ENDPROC
|
|
|
|
PROCEDURE Destroy
|
|
lcCursor = This.RecordSource
|
|
If Used(lcCursor)
|
|
Select (lcCursor)
|
|
Set Filter To
|
|
Endif
|
|
ENDPROC
|
|
|
|
PROCEDURE do_initializeaza
|
|
*!* daca tlGridSalvat = .F., atunci salvarea se face aici
|
|
*!* daca tlGridSalvat = .T., atunci salvarea a fost facuta deja, iar tcCursor trebuie sa aiba o valoare
|
|
Lparameters tlGridSalvat,tcCursor
|
|
*!* Campuri obligatorii in cursor :
|
|
*!* id ( in this.cid )
|
|
*!* cheie ( in this.cexplicatie )
|
|
*!* nivel
|
|
*!* cale ( toata calea de la primul nod pana la tatal nodului actual separate prin this.cseparator )
|
|
*!* tip ( 0 = nod , 1 = frunza )
|
|
_Screen.LockScreen = .T.
|
|
If !tlGridSalvat
|
|
lcCursor = This.RecordSource
|
|
Else
|
|
lcCursor = tcCursor
|
|
Endif
|
|
lcColoanaExplicatie = [a.]+This.cexplicatie
|
|
lcSeparator = This.cseparator
|
|
|
|
If !tlGridSalvat
|
|
save_grid_tag(This)
|
|
Endif
|
|
Select Alltrim(Nvl(a.cale,''))+lcSeparator As crtordine,a.*,Iif(a.tip=1,"X",Iif(This.ldeschise,"D","N")) As deschis,;
|
|
IIF(This.ldeschise,.T.,Iif(a.nivel=1,.T.,.F.)) As vizibil From (lcCursor) a Order By 1 ;
|
|
INTO Cursor (lcCursor) Readwrite
|
|
Select (lcCursor)
|
|
Set Filter To vizibil
|
|
Go Top
|
|
If !tlGridSalvat
|
|
restore_grid_tag(This)
|
|
Endif
|
|
|
|
With This.columntv
|
|
.DynamicCurrentControl = ["tip"+ALLTRIM(CHRTRAN(]+lcCursor+[.deschis,"DNX","di"))]
|
|
.DynamicBackColor=[this.dynamic()]
|
|
Endwith
|
|
_Screen.LockScreen = .F.
|
|
|
|
ENDPROC
|
|
|
|
PROCEDURE dynamic
|
|
With Evaluate("this.columnTV."+ Evaluate(This.columnTV.DynamicCurrentControl))
|
|
.do_aranjeaza()
|
|
lcRgb = This.Objects(2).DynamicBackColor
|
|
*!* If Recno(This.RecordSource)=This.nRecno
|
|
*!* lcRgb = [RGB(]+Alltrim(This.crgbbackcolor)+[)]
|
|
*!* Else
|
|
*!* lcRgb = [Rgb(255,255,255)]
|
|
*!* Endif
|
|
*!* With .explicatie
|
|
*!* .BackColor = &lcRgb
|
|
*!* .Refresh()
|
|
*!* Endwith
|
|
Endwith
|
|
Return &lcRgb
|
|
ENDPROC
|
|
|
|
PROCEDURE Init
|
|
lcCursor = This.RecordSource
|
|
With This.ColumnTv
|
|
If Vartype(.text1)="O"
|
|
.RemoveObject("text1")
|
|
Endif
|
|
|
|
.AddObject("tip","element",0,This.cexplicatie)
|
|
.AddObject("tipi","element",1,This.cexplicatie)
|
|
.AddObject("tipd","element",2,This.cexplicatie)
|
|
|
|
Endwith
|
|
ENDPROC
|
|
|
|
PROCEDURE nodeclick
|
|
Local lnTip,lcCheie,lnNivel,lnNivelStop,lnNivelPrec, lnNivelMaxim
|
|
lnNivelMaxim = 50
|
|
Dimension laVizibil(lnNivelMaxim)
|
|
lcColoanaID = This.cid
|
|
*!* lcColoanaCheie = This.cexplicatie
|
|
*!* lcSeparator = This.cseparator
|
|
lnNivelStop = lnNivelMaxim
|
|
|
|
Select (This.RecordSource)
|
|
If !Empty(deschis)
|
|
Thisform.LockScreen = .T.
|
|
lnId = &lcColoanaID
|
|
*!* lcCheie = Lower(Alltrim(cale)+Alltrim(&lcColoanaCheie)+ALLTRIM(lcSeparator)+[*])
|
|
lcCheie = LOWER(ALLTRIM(crtordine)+[*])
|
|
If deschis = "D"
|
|
Replace deschis With "N"
|
|
Replace vizibil With .F. For Like(lcCheie,Lower(cale))
|
|
Else
|
|
Set Filter To
|
|
Replace deschis With "D"
|
|
laVizibil(nivel+1) = .T.
|
|
lnNivelPrec = nivel
|
|
Skip
|
|
Scan Rest For Like(lcCheie,Lower(cale))
|
|
If nivel <= lnNivelStop
|
|
lnNivelStop = lnNivelMaxim
|
|
If lnNivelPrec > nivel
|
|
For i = nivel + 1 To lnNivelPrec
|
|
laVizibil(i) = .F.
|
|
Endfor
|
|
Else
|
|
lnNivelPrec = nivel
|
|
Endif
|
|
Replace vizibil With laVizibil(nivel)
|
|
If Alltrim(deschis) = "D"
|
|
laVizibil(nivel+1) = .T.
|
|
Endif
|
|
If Alltrim(deschis) = "N"
|
|
lnNivelStop = nivel
|
|
Endif
|
|
Endif
|
|
Endscan
|
|
Endif
|
|
Set Filter To vizibil
|
|
Locate For &lcColoanaID = lnId
|
|
This.columnTV.DynamicCurrentControl=This.columnTV.DynamicCurrentControl
|
|
This.Refresh
|
|
Thisform.LockScreen = .F.
|
|
Endif
|
|
Release laVizibil
|
|
ENDPROC
|
|
|
|
ENDDEFINE
|