oTree:bChanged := {|oTree,oItem| oItem := oTree:GetSelected(), ;
IF( oItem # nil .and. ValType( oItem:cargo ) == "B", Eval( oItem:cargo ), nil ) }
oSubItem:= oItem:Add(item[1], item[3], {|| MSGInfo("Hola") })
FUNCTION IsAppThemed()
RETURN .F.
cuatecatl82 wrote:Maestro Gracias por su comentario, aun falta pulir para que sea un ejemplo funcional pues aún no ejecuta el bloque de código asignado desde oItem:Add(), aqui le envio los bmp y el rc.
https://www.mediafire.com/?9ecqvq06w1ehvcl
Le comento que probe su ejemplo y tiene el fallo del pintado del scroll horizontal..
Una vez ejecutada -> Seleccione "Unidades Virtuales RAM" -> Mueva el Scroll Horizontal a la derecha para leer completo el Item y regresela con el mouse a la posisción original, se produce el mismo barrido de los bmps..
El barrido del scroll Vertical no se presenta, es correcto, pero el del scroll Horizontal sigue..
LOCAL aData:= {{"Unidades Virtuales", 0, 0, ""},;
{"Disco 3 1.44 Mb", 1, 1, ""},;
{"Volumen 15151441", 2, 2, "hola"},;
{"Volumen 84515158", 2, 2, "mundo"},;
{"Volumen 77722582", 2, 2, "aqui"},;
{"Volumen 15151441", 2, 2, "estoy"},;
{"Volumen 84515158", 2, 2, ""},;
{"Volumen 77722582", 2, 2, "estoy"}]
oSubItem:= oItem:Add(item[1], item[3], {|| LeeItem(item[4]) })
...
...
Function LeeItem(cValor)
Return Msginfo(cValor)
oItem:Add( cPrompt, nImage, nValue } )
oItem:Add( "Volumen 15151441", 2, "F78T47D" )
LOCAL aData:= {{"Unidades Virtuales", 0, 0},;
{"Disco 3 1.44 Mb", 1, 1},;
Aqui ---> {"Volumen 15151441", 2, 2, "F78T47D"},;
{"Volumen 84515158", 2, 2, "GG5534T"},;
{"Discos Duros", 1, 3},;
{"Volumen 1", 2, 3},;
{"Particion 1", 3, 2, "HD487RY552"},;
{"Particion 2", 3, 2, "WD$JO1931"},;
{"Particion 3", 3, 2, "ST458GH59P"},;
{"Volumen 2", 2, 3},;
{"Particion 1", 3, 2, "EGTYUYO72},;
{"Particion 2", 3, 2, "TTRH455123"}}
FOR each item in aData
IF item[2] > 0
IF item[2] > oSubItem:Cargo["level"]
oItem = oSubItem
ELSEIF item[2] == oSubItem:Cargo["level"]
oItem = oSubItem:oParent
ELSE
oParent = oSubItem:oParent
FOR i = oSubItem:Cargo["level"] TO item[2] + 1 step -1
oParent = oParent:oParent
NEXT
oItem = oParent
ENDIF
ENDIF
IF(!EMPTY(item[4]),(oSubItem:= oItem:Add(item[1], item[3], {{|| LeeSerie(item[4]) }})),(oSubItem:= oItem:Add(item[1], item[3])))
oSubItem:Cargo:= { "level" => item[2] }
NEXT
STATIC FUNCTION LeeSerie(cSerie)
MSGInfo(cSerie)
RETURN Nil
IF(!EMPTY(item[4]),(oSubItem:= oItem:Add(item[1], item[3], {{|| LeeSerie(item[4]) }})),(oSubItem:= oItem:Add(item[1], item[3])))
# Include "FiveWin.ch"
FUNCTION Main()
ExploDsk()
RETURN Nil
FUNCTION ExploDsk()
LOCAL oLogo,oCur,oSel,oIco,oDlg,oBtn1,oBtn2,oTree,oFont1,oFont2,oImageList
DEFINE FONT oFont1 NAME "TAHOMA" BOLD SIZE 00, 16
DEFINE FONT oFont2 NAME "TAHOMA" SIZE 00, 16
DEFINE CURSOR oCur RESOURCE "FLECHA"
DEFINE CURSOR oSel RESOURCE "MANO"
DEFINE ICON oIco RESOURCE "00"
DEFINE DIALOG oDlg RESOURCE "LISTADO" TITLE "Listado de Discos" ICON oIco
oImageList := TImageList():New(24,24)
oImageList:Add(TBitmap():DEFINE("VIR1",,oDlg), TBitmap():DEFINE("VIR2",,oDlg))
oImageList:Add(TBitmap():DEFINE("FLO1",,oDlg), TBitmap():DEFINE("FLO2",,oDlg))
oImageList:Add(TBitmap():DEFINE("PAR1",,oDlg), TBitmap():DEFINE("PAR2",,oDlg))
oImageList:Add(TBitmap():DEFINE("HDD1",,oDlg), TBitmap():DEFINE("HDD2",,oDlg))
oImageList:Add(TBitmap():DEFINE("INT1",,oDlg), TBitmap():DEFINE("INT2",,oDlg))
oImageList:Add(TBitmap():DEFINE("DVD1",,oDlg), TBitmap():DEFINE("DVD2",,oDlg))
oImageList:Add(TBitmap():DEFINE("RAM1",,oDlg), TBitmap():DEFINE("RAM2",,oDlg))
oImageList:Add(TBitmap():DEFINE("NET1",,oDlg), TBitmap():DEFINE("NET2",,oDlg))
oImageList:Add(TBitmap():DEFINE("USB1",,oDlg), TBitmap():DEFINE("USB2",,oDlg))
oTree:= TTreeView():REDEFINE(100, oDlg, 0, , .F. ,"" )
oTree:oFont:= oFont1
oTree:OnClick:= {| nRow, nCol | oTree:Refresh() }
oTree:bChanged:= {| oTree, oItem| oItem:= oTree:GetSelected(), ;
MSGInfo(VALTYPE( oItem:cargo )),IF( oItem # Nil .AND. ValType( oItem:Cargo ) == "B", Eval( oItem:Cargo ), Nil ) }
oDlg:lHelpIcon:= .F.
ACTIVATE DIALOG oDlg CENTERED ON INIT(Self, Carga(oTree,oImageList,oFont2))
RETURN Nil
STATIC FUNCTION Carga(oTree,oImageList,oFont2)
LOCAL oItem1, oItem2
LOCAL oItem:= oTree
LOCAL oSubItem, item, oParent, i
LOCAL aData:= {{"Unidades Virtuales", 0, 0, Nil},;
{"Disco 3 1.44 Mb", 1, 1, Nil},;
{"Volumen 15151441", 2, 2, "uno"},;
{"Volumen 84515158", 2, 2, "dos"},;
{"Volumen 77722582", 2, 2, "tres"},;
{"Volumen 15151441", 2, 2, "cuatro"},;
{"Volumen 84515158", 2, 2, "cinco"},;
{"Volumen 77722582", 2, 2, "seis"},;
{"Discos Duros", 1, 3, Nil},;
{"Volumen 1", 2, 4, Nil},;
{"Particion 1", 3, 2, "siete"},;
{"Particion 2", 3, 2, "ocho"},;
{"Particion 3", 3, 2, "nueve"},;
{"Volumen 2", 2, 4, Nil},;
{"Particion 1", 3, 2, "diez"},;
{"Particion 2", 3, 2, "once"},;
{"Disco CD-DVD RAM", 1, 5, Nil},;
{"Volumen 15151441", 2, 2, "doce"},;
{"Volumen 45481278", 2, 2, "trece"},;
{"Volumen 89612255", 2, 2, "catorce"},;
{"Unidades Virtuales RAM",1, 6, Nil},;
{"Volumen 15151441", 2, 2, "quince"},;
{"Volumen 45481278 Haber si funciona el Scroll", 2, 2, "diesiseis"},;
{"Volumen 89612255", 2, 2, "diesisiete"},;
{"Unidades de Red", 1, 7, Nil},;
{"Volumen 45481278", 2, 2, "diesiocho"},;
{"Discos USB", 1, 8, Nil},;
{"Volumen 1", 2, 2, "diesinueve"},;
{"Volumen 2", 2, 2, "veinte"}}
FOR Each Item In aData
IF Item[2] > 0
IF Item[2] > oSubItem:Cargo["level"]
oItem = oSubItem
ELSEIF Item[2] == oSubItem:Cargo["level"]
oItem = oSubItem:oParent
ELSE
oParent:= oSubItem:oParent
FOR I = oSubItem:Cargo["level"] TO Item[2] + 1 Step -1
oParent:= oParent:oParent
NEXT
oItem = oParent
ENDIF
ENDIF
oSubItem:= oItem:Add(Item[1], Item[3])
oSubItem:Cargo:= {"level" => Item[2]}
oItem:Cargo:= IF(!EMPTY(Item[4]),({|| LeeSerie(Item[4]) }),(Nil))
NEXT
oTree:SetImageList(oImageList)
oTree:Expand()
oTree:GoTop()
RETURN Nil
STATIC FUNCTION LeeSerie(cSerie)
MSGInfo(cSerie)
RETURN Nil
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 58 guests