none
Panel lateral - Purecomponents RRS feed

  • Pregunta

  • Buenas, hace unos años que vengo utilizando en una aplicación el control ACCESSNAVIGATOR de PURECOMPONENTS.

    Para quien no lo conozca, pongo una captura.

    Ahora, necesito realizar ciertas modificaciones y necesitaría poder leer todos los ítems uno a uno, pero no consigo hacerlo.

    ¿alguien que haya trabajado con dicho control y que quizás pueda haberlo conseguido?

    Al poco tiempo de comprar la librería PURECOMPONENTS dejo de dar soporte técnico.

    De otro modo, os agradecería si me podéis aconsejar algún otro control similar del que tengáis buenas referencias.

    Muchas gracias por anticipado!

    martes, 22 de marzo de 2016 10:58

Respuestas

  •  Hola:
     El control AccessNavigatorMDI contiene Grupos. Estos Grupos contienen Items.
     En el codigo que te puse antes, a los items en su propiedad Tag les voy dando un numero consecutivo para luego preguntar con la siguiente instruccion
      Select Case CInt(e.Item.Tag)
     
     Procedimiento para recorrer los diferentes items

     Private Sub lP_RecorrerItem()
            For Each grupo As PureComponents.ActionSet.Navigators.Items.NavigatorGroup In Me.AccessNavigatorMDI.Groups
                For Each item As PureComponents.ActionSet.Navigators.Items.NavigatorGroupItem In grupo.Items
                    MessageBox.Show(item.Text)
                Next
            Next
     End Sub

    ¿Cual es la estructura de la tabla donde asignas a cada usuario a que item puede acceder?
    Conociendo ese dato, en vez de  MessageBox.Show(item.Text) pondras if ..... Then item.visible=False

    Con respecto a lo de abrir 3 veces el mismo Form, he probado y no encuentro la forma, no se si dejara porque tiene "poco" sentido hacer eso. ¿Cual es el motivo que tienes para hacer eso?

    Un saludo desde Bilbo
    Carlos

    • Marcado como respuesta mayoko miércoles, 23 de marzo de 2016 17:51
    miércoles, 23 de marzo de 2016 8:30
  • Bueno, pues finalmente di con la respuesta para como abrir varias pestañas :

    Dim myUserControl As uc_art = New uc_art()
    AccessNavigatorMDI1.AddTab("Titulo Ventana", myUserControl)

    De esta forma, podemos abrir tantas ventanas como queramos de un mismo control.

    • Marcado como respuesta mayoko miércoles, 23 de marzo de 2016 17:55
    miércoles, 23 de marzo de 2016 17:55

Todas las respuestas

  • Hola:
    En el Form que contiene el control AccessNavigatorMDI, tienes que tener el siguiente codigo

    Private Sub AccessNavigatorMDI_MDIControlContentRequest(ByVal sender As Object, ByVal e As PureComponents.ActionSet.Navigators.MDIControlContentRequestEventArgs) Handles AccessNavigatorMDI.MDIControlContentRequest
            Me.Cursor = Cursors.WaitCursor
            Dim myUserControl As UserControl = Nothing
            Select Case CInt(e.Item.Tag)
                Case 1
                    myUserControl = New uscXXXX
                Case 2
                    myUserControl = New uscYYYY
                Case 3
                    myUserControl = New uscZZZZ
                   
                    etc, etc
                   
                Case Else
                    MessageBox.Show("Opcion  NO Disponible", "AccessNavigatorMDI_MDIControlContentRequest", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
                    Return
            End Select
            e.Content = myUserControl
            e.IsMDI = True
            Me.Cursor = Cursors.Default
    End Sub

    donde uscZZZZ es un usercontrol

    Espero que te sea de ayuda

    Un saludo desde Bilbo
    Carlos


    martes, 22 de marzo de 2016 12:59
  • Ante todo, J.Carlos agradecerte la respuesta y disculpa si intente dirigirme a ti preguntando en otro mensaje, era precisamente porque conocía que tu conocías este componente.

    Creo que no me explique bien con lo que necesito hacer, lo pongo y a ver si puedes echarme un cable nuevamente:

    Dentro del control, ya tengo creado el menú, es decir, siguiendo con la captura anterior :

    Informes

    - Tipos

    - Procesos

    - Control

    Y ahora, quiero controlar a los usuarios, de tal forma que cada usuario solo vea aquellos "sitios" a los que pueda acceder, para ello estaba intentando algo como esto :

    AccessNavigatorMDI.item("Tipos").visible= false

    Pero no veo como referenciar el "item" del menu. 

    Te agradezco si me puedes echar un cable de alguna manera.

    Otra cosa, que estoy tratando es que pueda abrir varias veces el mismo formulario. Es decir, que si pincho 3 veces en el menú me abrá 3 pestañas iguales.

    Gracias, un saludo!

    martes, 22 de marzo de 2016 15:41
  •  Hola:
     El control AccessNavigatorMDI contiene Grupos. Estos Grupos contienen Items.
     En el codigo que te puse antes, a los items en su propiedad Tag les voy dando un numero consecutivo para luego preguntar con la siguiente instruccion
      Select Case CInt(e.Item.Tag)
     
     Procedimiento para recorrer los diferentes items

     Private Sub lP_RecorrerItem()
            For Each grupo As PureComponents.ActionSet.Navigators.Items.NavigatorGroup In Me.AccessNavigatorMDI.Groups
                For Each item As PureComponents.ActionSet.Navigators.Items.NavigatorGroupItem In grupo.Items
                    MessageBox.Show(item.Text)
                Next
            Next
     End Sub

    ¿Cual es la estructura de la tabla donde asignas a cada usuario a que item puede acceder?
    Conociendo ese dato, en vez de  MessageBox.Show(item.Text) pondras if ..... Then item.visible=False

    Con respecto a lo de abrir 3 veces el mismo Form, he probado y no encuentro la forma, no se si dejara porque tiene "poco" sentido hacer eso. ¿Cual es el motivo que tienes para hacer eso?

    Un saludo desde Bilbo
    Carlos

    • Marcado como respuesta mayoko miércoles, 23 de marzo de 2016 17:51
    miércoles, 23 de marzo de 2016 8:30
  • Buenas!

    Pues ahora si que si! muchas gracias de verdad, me estaba volviendo loca, si hasta estaba tratando de modificar el código fuente del control....

    Siguiendo con tus instrucciones, por si a alguien mas algún dia pudiera hacerle falta, he comprobado que dentro de los grupos estos pueden tener ITEM y dentro de estos ITEM puede haber otros ITEMS, pues la manera para recorrerlos todos seria tal que asi :

    For Each grupo As PureComponents.ActionSet.Navigators.Items.NavigatorGroup In AccessNavigatorMDI1.Groups ' Grupo 
                    MessageBox.Show(grupo.Text.ToString)
                    For Each item As PureComponents.ActionSet.Navigators.Items.NavigatorGroupItem In grupo.Items ' Item 
                        MessageBox.Show(item.Text)
                        For Each item2 As PureComponents.ActionSet.Navigators.Items.NavigatorGroupSubitem In item.Items ' SubItem
                            MessageBox.Show(item2.Text)
                        Next
                    Next
                Next
    

    Dentro de lo que yo llamo item2 aun cabria la posibilidad de que hubiera otros ítems, pero en el control a mi nunca me funciono mas de 2 niveles de agrupación.

    Muchas muchas gracias!

    Lo de poder abrir 2 veces el mismo form es por ejemplo para poder tener cargadas 2 pedidos diferentes a la vez. Ahora mismo lo que tengo es varias veces el mismo ítem dentro del menú por ejemplo :

    Clientes #1

    Clientes #2

    Pero pensaba en algo mas "profesional". No obstante, no quiero hacerte perder mucho tiempo ya con lo anterior me has alegrado el día!!

    miércoles, 23 de marzo de 2016 17:24
  • Bueno, pues finalmente di con la respuesta para como abrir varias pestañas :

    Dim myUserControl As uc_art = New uc_art()
    AccessNavigatorMDI1.AddTab("Titulo Ventana", myUserControl)

    De esta forma, podemos abrir tantas ventanas como queramos de un mismo control.

    • Marcado como respuesta mayoko miércoles, 23 de marzo de 2016 17:55
    miércoles, 23 de marzo de 2016 17:55
  • Hola:
    Me alegro de que te haya servido

    Un saludo desde Bilbo
    Carlos

    martes, 29 de marzo de 2016 8:11