Imprimir Treeview

203 views
Skip to first unread message

Claudio Rivadera

unread,
Mar 4, 2012, 7:54:16 PM3/4/12
to Comunidad de Visual Foxpro en Español
Amigos
Planeo construir un treeview conteniendo información de la estructura
una organización y consiguientemente la cantidad de empleados en cada
oficina/nodo
Luego quiero imprimir esa especie de organigrama
Cómo imprimo un treeview?? Uso VFP 9.0
Desde ya muchas gracias!

Guillermo Gimenez

unread,
Mar 4, 2012, 8:35:49 PM3/4/12
to publice...@googlegroups.com
Buenas Noches Claudio, si ya tenes armado el TreeView con la estructura organizacional, no veo otra opcion que capturar la pantalla e imprimirla o tirarla a un report, para este caso podes investigar gdiplusx o bien gpimage (una clase en un prg). Aunque las mejores opciones sin las siguientes: a) buscar algun activeX basado en treveiew para mostrar un organigrama (hay varios por ahi, es cuestion de buscar uno free) y b) visitar foxite y buscar una clase para crear organigramas, creo que es funcional, sencilla pero funcional, espero que sea de ayuda.... Saludos
 
Guille

--- El dom 4-mar-12, Claudio Rivadera <criv...@gmail.com> escribió:

Douglas Sánchez Guillén

unread,
Mar 4, 2012, 8:51:04 PM3/4/12
to publice...@googlegroups.com
Hola yo tengo dos rutinas una para grafico y la otra para imprmir en texto simple.

para texto sinsilla es esta...
Tvlister () es la funcion
Thisform.testructura   es el nodo yo en mi caso uso el de vbtofox.ocx es facil de controlar y los graficos que se pueden adjuntar son buenos.


Create Cursor TMPTREE (TEXTO C(100), Dir Int)
Select TMPTREE
Local TMP As Character
TMP = TVLister(Thisform.testructura)    &&&& abajo esta la funcion espero te sirva, yo hago la estructura organizacion de la empresa y asi la imprimo.


**** imprimir Tree view
Function TVLister
Lparameters toTV
Local lnIndex,lnLastIndex
_Cliptext=''
With toTV
    lnIndex     = .Nodes(1).Root.FirstSibling.Index
    lnLastIndex = .Nodes(1).Root.LastSibling.Index
    _GetSubNodes(m.lnIndex,m.toTV,m.lnIndex)
    Do While m.lnIndex # m.lnLastIndex
        lnIndex = .Nodes(lnIndex).Next.Index
        _GetSubNodes(m.lnIndex,m.toTV,m.lnIndex)
    Enddo
Endwith
Return _Cliptext

Function _GetSubNodes
Lparameters tnIndex, toTV, tnRootIndex
Local lnIndex, lnLastIndex
With toTV
    WriteNode(m.tnIndex,m.toTV, m.tnRootIndex)
    If .Nodes(m.tnIndex).Children > 0
        lnIndex  = .Nodes(m.tnIndex).Child.Index
        lnLastIndex = .Nodes(m.tnIndex).Child.LastSibling.Index
        _GetSubNodes(m.lnIndex,m.toTV,m.tnRootIndex)
        Do While m.lnIndex # m.lnLastIndex
            lnIndex = .Nodes(lnIndex).Next.Index
            _GetSubNodes(m.lnIndex,m.toTV,m.tnRootIndex)
        Enddo
    Endif
Endwith

Function WriteNode
Lparameters tnCurIndex, toTV,tnRootIndex
Local lnRootIndex, lnIndex, lcPrefix, lcKey, lnLevel
lnIndex = m.tnCurIndex
With toTV
    lcPrefix = '+-> ' + .Nodes(m.lnIndex).Text
    lnLevel = 0
    Do While lnIndex # tnRootIndex
        lnIndex = .Nodes(m.lnIndex).Parent.Index
        lcPrefix = Iif(.Nodes(m.lnIndex).LastSibling.Index = m.lnIndex,'     ','|  ')+Space(3)+m.lcPrefix
        lnLevel = m.lnLevel + 1
    Enddo
    Select TMPTREE
    Append Blank
    Replace texto With lcPrefix
    _Cliptext = _Cliptext + m.lcPrefix + Chr(13)
Endwith

Luis Maria Guayan

unread,
Mar 5, 2012, 7:31:54 AM3/5/12
to publice...@googlegroups.com
Mira esta clase de VFPX que es lo que tu necesitas seguramente

-- Organization Chart --
http://vfpx.codeplex.com/wikipage?title=Organization%20Chart

Mira este artículo de su creador:

-- Organization Chart -- Blog de Jijo Pappachan
http://weblogs.foxite.com/jijopappachan/2011/04/19/organization-chart-control-for-visual-foxpro

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Reply all
Reply to author
Forward
0 new messages