Página 1 de 1

Por favor, digan si se puede o no

Publicado: Dom Abr 19, 2009 7:01 pm
por carlosijc
SI NO ES FACIL O NO ME EXPLICO, POR FAVOR DIGAN ALGO, LA VERDAD ME INTERESA
RESOLVER ESA SITUACION
No se ven dentro del treeview los checkbox por que? y como solucionaria esto
WITH OBJECT oChk := TCheckBox():New(Self) con
TCheckBox():New(::oParent) se ven pero en el objeto que llamo al treeview
:nTop := cxnTop
:nLeft := nLeft
:nWidth := 15
:nHeight := 20
:Create()
END
Tengo la Clase TTreeview sobrecargada
CLASS TTreeView FROM XTreeView
METHOD WMLButtonDown(wParam, lParam)
ENDCLASS
METHOD WMLButtonDown(wParam, lParam ) CLASS TTreeview
LOCAL R, aState, X, I
LOCAL aRect := {}
LOCAL cxLeft, cxEsp, cxbtnSize, cxCant, cdPostPaint
LOCAL oItem, nLeft, nRight, nTop
LOCAL nX := LOWORD( lParam )
LOCAL nY := HIWORD( lParam )
cxEsp := 56
cxBtnSize := 15
IF ( oItem := ::HitTest( nX, nY ) ) != Nil
IF ::SetFocus()
oItem:Select()
ENDIF
ENDIF
cxCant := LEN(oItem:aItems)
AADD(aRect,::GetItemRect(oItem:nIndex))
IF !LEN(aRect) > 0
RETURN .F.
ELSE
cxLeft := aRect[1,1]
nTop := aRect[1,2]
nLeft := ::nWidth - cxLeft // ::nLeft+265 // nWidth - cxLeft
ENDIF
nTop := aRect[1,2]
FOR i:= 0 To cxCant - 1
X := ::nWidth - cxLeft + cxEsp
nLeft := X + (I * cxbtnSize)
IF oItem:IsExpanded
AState := 1
ELSE
AState := 0
ENDIF
WITH OBJECT TCheckBox():New(::oparent)
:nTop := nTop
:nLeft := nLeft
:nWidth := 15
:nHeight := 20
:Create()
END
NEXT
RETURN Super:WMLButtonDown()
Para los que me puedan ayudar diganme como resolver este asunto por favor,
aqui les va un ejemplo de lo que se quiere
Saludos y muchas gracias

Por favor, digan si se puede o no

Publicado: Lun Abr 20, 2009 11:37 am
por Pedro Gil
Carlos,
No sé si te he entendido bien. Pero si lo que sencillamente deseas es que el
propio Treeview pinte un checkbox en los elementos del árbol, y que el
usuario tenga la opción de activar o desactivar la casilla, tal como te han
comentado en los mensajes anteriores es haciendo lo siguiente:
:lCheckBox := .T.
Tienes un ejemplo en el directorio samplestreeview de xailer.
Serí­a algo semejante a:
WITH OBJECT oTree := TTreeView():New( Self )
:SetBounds( 8, 8, 382, 438 )
:lCheckBox := .T.
:Create()
END
Si después en tu programa haces algo así­:
oTree:AddItem( "Uno",,,, .T. )
oTree:AddItem( "Dos" )
dichos elementos del árbol tendrán un checkbox. El primero estará con
:lChecked := .T., y el segundo :lChecked := .F.
No es necesario que crees un objecto Checkbox por cada elemento. El propio
TreeView es el que los pinta.
Saludos.
"Carlos Cedeño" <carlosijc@hotmail.com> escribió en el mensaje de noticias
news:49ebc9c8$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> SI NO ES FACIL O NO ME EXPLICO, POR FAVOR DIGAN ALGO, LA VERDAD ME
> INTERESA
> RESOLVER ESA SITUACION
>
> No se ven dentro del treeview los checkbox por que? y como solucionaria
> esto
>
> WITH OBJECT oChk := TCheckBox():New(Self) con
> TCheckBox():New(::oParent) se ven pero en el objeto que llamo al treeview
> :nTop := cxnTop
> :nLeft := nLeft
> :nWidth := 15
> :nHeight := 20
> :Create()
> END
>
> Tengo la Clase TTreeview sobrecargada
>
> CLASS TTreeView FROM XTreeView
> METHOD WMLButtonDown(wParam, lParam)
> ENDCLASS
>
> METHOD WMLButtonDown(wParam, lParam ) CLASS TTreeview
> LOCAL R, aState, X, I
> LOCAL aRect := {}
> LOCAL cxLeft, cxEsp, cxbtnSize, cxCant, cdPostPaint
> LOCAL oItem, nLeft, nRight, nTop
> LOCAL nX := LOWORD( lParam )
> LOCAL nY := HIWORD( lParam )
> cxEsp := 56
> cxBtnSize := 15
>
> IF ( oItem := ::HitTest( nX, nY ) ) != Nil
> IF ::SetFocus()
> oItem:Select()
> ENDIF
> ENDIF
>
> cxCant := LEN(oItem:aItems)
> AADD(aRect,::GetItemRect(oItem:nIndex))
> IF !LEN(aRect) > 0
> RETURN .F.
> ELSE
> cxLeft := aRect[1,1]
> nTop := aRect[1,2]
> nLeft := ::nWidth - cxLeft // ::nLeft+265 // nWidth - cxLeft
> ENDIF
> nTop := aRect[1,2]
> FOR i:= 0 To cxCant - 1
> X := ::nWidth - cxLeft + cxEsp
> nLeft := X + (I * cxbtnSize)
> IF oItem:IsExpanded
> AState := 1
> ELSE
> AState := 0
> ENDIF
> WITH OBJECT TCheckBox():New(::oparent)
> :nTop := nTop
> :nLeft := nLeft
> :nWidth := 15
> :nHeight := 20
> :Create()
> END
> NEXT
> RETURN Super:WMLButtonDown()
>
> Para los que me puedan ayudar diganme como resolver este asunto por favor,
> aqui les va un ejemplo de lo que se quiere
>
> Saludos y muchas gracias
>
>
>
>

Por favor, digan si se puede o no

Publicado: Lun Abr 20, 2009 3:06 pm
por zeasoftware
Pon tu ejemplo en un pequeño proyecto y subelo, o mandalo a mi mail, y te
apoyo.
Saludos.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
dirza_com@hotmail.com

Por favor, digan si se puede o no

Publicado: Lun Abr 20, 2009 4:44 pm
por Rene Flores
Carlos:
Perdona pero no tengo NPI de lo que quieres hacer, los checkboxes
aparecen nativamente en el Treeview, puedes ver tambien los mensajes de
Bingen donde viene un ejemplo de Tree con checks.
Saludos.
Rene Flores
http://www.ciber-tec.com
Cedeño escribió:
> SI NO ES FACIL O NO ME EXPLICO, POR FAVOR DIGAN ALGO, LA VERDAD ME INTERESA
> RESOLVER ESA SITUACION
>
> No se ven dentro del treeview los checkbox por que? y como solucionaria
> esto
>
> WITH OBJECT oChk := TCheckBox():New(Self) con
> TCheckBox():New(::oParent) se ven pero en el objeto que llamo al treeview
> :nTop := cxnTop
> :nLeft := nLeft
> :nWidth := 15
> :nHeight := 20
> :Create()
> END
>
> Tengo la Clase TTreeview sobrecargada
>
> CLASS TTreeView FROM XTreeView
> METHOD WMLButtonDown(wParam, lParam)
> ENDCLASS
>
> METHOD WMLButtonDown(wParam, lParam ) CLASS TTreeview
> LOCAL R, aState, X, I
> LOCAL aRect := {}
> LOCAL cxLeft, cxEsp, cxbtnSize, cxCant, cdPostPaint
> LOCAL oItem, nLeft, nRight, nTop
> LOCAL nX := LOWORD( lParam )
> LOCAL nY := HIWORD( lParam )
> cxEsp := 56
> cxBtnSize := 15
>
> IF ( oItem := ::HitTest( nX, nY ) ) != Nil
> IF ::SetFocus()
> oItem:Select()
> ENDIF
> ENDIF
>
> cxCant := LEN(oItem:aItems)
> AADD(aRect,::GetItemRect(oItem:nIndex))
> IF !LEN(aRect) > 0
> RETURN .F.
> ELSE
> cxLeft := aRect[1,1]
> nTop := aRect[1,2]
> nLeft := ::nWidth - cxLeft // ::nLeft+265 // nWidth - cxLeft
> ENDIF
> nTop := aRect[1,2]
> FOR i:= 0 To cxCant - 1
> X := ::nWidth - cxLeft + cxEsp
> nLeft := X + (I * cxbtnSize)
> IF oItem:IsExpanded
> AState := 1
> ELSE
> AState := 0
> ENDIF
> WITH OBJECT TCheckBox():New(::oparent)
> :nTop := nTop
> :nLeft := nLeft
> :nWidth := 15
> :nHeight := 20
> :Create()
> END
> NEXT
> RETURN Super:WMLButtonDown()
>
> Para los que me puedan ayudar diganme como resolver este asunto por favor,
> aqui les va un ejemplo de lo que se quiere
>
> Saludos y muchas gracias
>
>
>
>

Por favor, digan si se puede o no

Publicado: Mar Abr 21, 2009 7:59 am
por carlosijc
Me perdonan, pero creo que no me hago entender.
observen la foto.
Estoy agarrando la clase TTreeview y y en la sobrecarga quiero agregar
CheckBoxes que correspondan a las columnas Acceso, Lectura, Escritura,
Crear, Borrar Imprimir que aparecen en pantalla, se muestre una listas de
checkboxes por cada elemento de la rama clickeada, el problema esta que
fuera de la clases y depositando no sobre el mismo treeview sino sobre un
oBevel logro hacerlo solo para el elemento seleccionado., pero pienso que
sobrecargando el treeview se puede obtener exactamente la posicion donde se
encuentra la rama o elemento clickeada.
COMO DIGO DENTRO DE LA CLASES, QUE SE CREEN LOS CHECKBOXES DENTRO DEL
TREEVIEW?
Con SELF no se muestran dentro del Treeview los CheckBoxes con ::oParent, se
muestran lso checkboxes dentro de padre, generalmente dentro del Form
Este es como lo hago en la sobrecarga que no me trabaja.
WITH OBJECT oChk := TCheckBox():New(Self) con TCheckBox():New(::oParent)
se ven pero en el objeto que llamo al treeview
:nTop := cxnTop
:nLeft := nLeft
:nWidth := 15
:nHeight := 20
:Create()
END
ESTA ES LA CLASE TTREEVIEW
Tengo la Clase TTreeview sobrecargada
CLASS TTreeView FROM XTreeView
METHOD WMLButtonDown(wParam, lParam) //Aca uso el WMLButtonDown pero
creo que podria usar otro envento.
ENDCLASS
METHOD WMLButtonDown(wParam, lParam ) CLASS TTreeview
LOCAL R, aState, X, I
LOCAL aRect := {}
LOCAL cxLeft, cxEsp, cxbtnSize, cxCant, cdPostPaint
LOCAL oItem, nLeft, nRight, nTop
LOCAL nX := LOWORD( lParam ) //Aqui Recojo la posicion X del elemento
Clickeado
LOCAL nY := HIWORD( lParam ) //Aqui Recojo la posicion Y del elemento
Clickeado ESTO LO HACE BIEN, AL MENOS ES LO QUE CREO
cxEsp := 56
cxBtnSize := 15
IF ( oItem := ::HitTest( nX, nY ) ) != Nil
IF ::SetFocus()
oItem:Select()
ENDIF
ENDIF
cxCant := LEN(oItem:aItems)
AADD(aRect,::GetItemRect(oItem:nIndex))
IF !LEN(aRect) > 0
RETURN .F.
ELSE
cxLeft := aRect[1,1]
nTop := aRect[1,2]
nLeft := ::nWidth - cxLeft // ::nLeft+265 // nWidth - cxLeft
ENDIF
nTop := aRect[1,2]
FOR i:= 0 To cxCant - 1
X := ::nWidth - cxLeft + cxEsp
nLeft := X + (I * cxbtnSize)
IF oItem:IsExpanded
AState := 1
ELSE
AState := 0
ENDIF
//AQUI CREO LOS CHECKBOXES
WITH OBJECT TCheckBox():New(::oparent), como ven con el oparent, se
muestran, pero no en el TTreeview, ES AQUI EL PROBLEMA
:nTop := nTop
:nLeft := nLeft
:nWidth := 15
:nHeight := 20
:Create()
END
NEXT
RETURN Super:WMLButtonDown()
SE PERFECTAMENTE QUE PONIENDO LA PROPIEDAD lCheckbox := .T. se mostrara el
checkbox activado por cada opcion del treeview, no es para nada lo que
deseo.
OBSERVEN FOTO
Saludos y muchas gracias

--

Attached files

Por favor, digan si se puede o no

Publicado: Mar Abr 21, 2009 6:06 pm
por carlosijc
Nadie??????
"Carlos Cedeño" <carlosijc@hotmail.com> escribió en el mensaje de
noticias:49ebc9c8$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> SI NO ES FACIL O NO ME EXPLICO, POR FAVOR DIGAN ALGO, LA VERDAD ME
> INTERESA
> RESOLVER ESA SITUACION
>
> No se ven dentro del treeview los checkbox por que? y como solucionaria
> esto
>
> WITH OBJECT oChk := TCheckBox():New(Self) con
> TCheckBox():New(::oParent) se ven pero en el objeto que llamo al treeview
> :nTop := cxnTop
> :nLeft := nLeft
> :nWidth := 15
> :nHeight := 20
> :Create()
> END
>
> Tengo la Clase TTreeview sobrecargada
>
> CLASS TTreeView FROM XTreeView
> METHOD WMLButtonDown(wParam, lParam)
> ENDCLASS
>
> METHOD WMLButtonDown(wParam, lParam ) CLASS TTreeview
> LOCAL R, aState, X, I
> LOCAL aRect := {}
> LOCAL cxLeft, cxEsp, cxbtnSize, cxCant, cdPostPaint
> LOCAL oItem, nLeft, nRight, nTop
> LOCAL nX := LOWORD( lParam )
> LOCAL nY := HIWORD( lParam )
> cxEsp := 56
> cxBtnSize := 15
>
> IF ( oItem := ::HitTest( nX, nY ) ) != Nil
> IF ::SetFocus()
> oItem:Select()
> ENDIF
> ENDIF
>
> cxCant := LEN(oItem:aItems)
> AADD(aRect,::GetItemRect(oItem:nIndex))
> IF !LEN(aRect) > 0
> RETURN .F.
> ELSE
> cxLeft := aRect[1,1]
> nTop := aRect[1,2]
> nLeft := ::nWidth - cxLeft // ::nLeft+265 // nWidth - cxLeft
> ENDIF
> nTop := aRect[1,2]
> FOR i:= 0 To cxCant - 1
> X := ::nWidth - cxLeft + cxEsp
> nLeft := X + (I * cxbtnSize)
> IF oItem:IsExpanded
> AState := 1
> ELSE
> AState := 0
> ENDIF
> WITH OBJECT TCheckBox():New(::oparent)
> :nTop := nTop
> :nLeft := nLeft
> :nWidth := 15
> :nHeight := 20
> :Create()
> END
> NEXT
> RETURN Super:WMLButtonDown()
>
> Para los que me puedan ayudar diganme como resolver este asunto por favor,
> aqui les va un ejemplo de lo que se quiere
>
> Saludos y muchas gracias
>
>
>
>

Por favor, digan si se puede o no

Publicado: Mié Abr 22, 2009 12:55 pm
por jrcsistemas
Carlos.
Yo creo todos te entendimos bien. En mi caso, no puedo ayudarte porque no
tengo conocimiento suficiente de Xailer.
En apariencia queda bueno. Pero no te estas complicando un poco ? La opcion
que te tiro José Alfonso esta buena. Yo se que para un programador es un
reto lograr "algo". Pero si por ahora los "padres de la criatura" no te
ayudaron, es porque no se puede, o es demasiado complicado.
Lamento no poder ayudarte. Porque a mi me encanta hacer rutinas complicadas
y de buena apariencia, pero en clipper, jeje.
Saludos
Juan