Un saludo muy grande a todos y de nuevo dando lata.
Por favor mirar la imagen para que tenga una idea de lo que quiero.
En un Treeview recojo las opciones del menu, quiero que se controlen los
permisos o tipos de permisos que algun usuario pueda tener.
Quiero que al abrir una rama, se abra un conjunto determinados de checkbox
de acuerdo a la cantidad de subopciones que tenga la rama, pero que a su vez
si se abre otra rama que se reacomode los checkbox abiertos y que ademas se
agregue los de la nueva rama, y logicamente que al cerrar se eliminen los
checkbox de las ramas que se vayan cerrando y reacomodando.
Popr favor es lo unico que me hace falta terminar para dar entrega de un
sistema y la verdad, ya llevo varios pero varios dias con esto, por favor,
no me digan que existe otros metodos, eso lo se, pero precisamente el
cliente asi mismo lo desea.
Espero haberme explicado y muchas gracias por su coperacion, aqui dejo un
pedazo de codigo para ver si me copian.
En el methodo OnItemExpanded hago lo siguiente, solo quiero lo miren para
que vean de que se trata, pero a la verdad estoy bien perdido
METHOD TrItemExpanded( oSender, hItem, nState ) CLASS TUsuarios
LOCAL oItem, aItems, nAt, nItems := 0
LOCAL nLeft := 0, nTop := 0
LOCAL hHash := {=>}
LOCAL cCampos, oChk
LOCAL cKey, cName, nPos := 0
static aTop := {}
static aValues := {}
nTot := oSender:GetCount()
oItem := oSender:GetSelectedItem()
AaDD(aValues,{oItem:nindex,0,Len(oitem:aItems)})
aSort(atop)
aSort(aValues)
FOR i:= 1 To Len(aValues)
IF LEN(aValues) # 0 .AND. LEN(aValues) ==1
aValues[i,2] := aValues[i,1]*20
aValues[i,3] := Len(oItem:aItems)
nTop := aValues[i,2]
cKey := "K"+Alltrim(str(i))
hHash[ cKey ] := aValues[i,1]
ELSE
IF (nPos := AScan( aValues, {|x| x[1]== i } ))>0
cKey := "K"+Alltrim(str(i))
hHash[ cKey ] := aValues[i,1]
* msginfo(hhash[ckey])
ENDIF
ENDIF
NEXT
HEval( hHash, {|k,v,i| IIF(HHasKey( hHash, k), msginfo(v),)} )
HEval( hHash, {|k,v,i| nTop := IIF(i == 1,aValues[i,1]*20,
v+aValues[i,3]*20) } )
nLeft := ::oTr:nLeft+265
FOR EACH xCampos IN oItem:aItems
xi++
IF xCampos:oParent:IsExpanded()
For j := 1 To LEN(::aChka)
::AddChk(::aChka[j], j, xi, nTop, nLeft )
nLeft += 56
NEXT
nLeft := ::oTr:nLeft+265
nTop += 20
ENDIF
NEXT
Bueno, espero me entienda y la verdad, no puedo enviar el el proyecto por su
tamano.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.