Autor Tema: ayudar a motrar frm con menu dinamico vb  (Leído 1881 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fre_saga

  • Sv Member
  • ***
  • Mensajes: 275
ayudar a motrar frm con menu dinamico vb
« : octubre 16, 2013, 08:27:11 pm »
buenas noches vengo a pedir de se ayuda
estoy trabajando con un menu dinamico desde la bd y todo bien armo el menu segun el usuario.
el problema es que no encontrado la forma de armar el llamado del frm de forma dinamica,
por el momento creo una funcion por frm para mostrar pero me gustaría saber si se puede 
hacer una función para llamar a todos los frm por medio de ella

hasta el momento  este es el codigo que tengo y que me esta funcionando

se arma el menu
Código: [Seleccionar]
Private Sub menus1()
        Try
            cn.Open()
            Dim IDMP As Integer
            Dim Dt As New DataTable
            Dim Dadapter As SqlDataAdapter
            Dim menu = New SqlCommand("SP_MENU_DINAMICO", cn)
            menu.CommandType = CommandType.StoredProcedure
            menu.Parameters.AddWithValue("@IdRol", CInt(Trim(codirol.Text)))
            Dadapter = New SqlDataAdapter(menu)
            Dadapter.Fill(Dt)
            Dim categorias As New ToolStripMenuItem()
            For Each row As DataRow In Dt.Rows
                categorias = New ToolStripMenuItem(CStr(row("Descripcion")))
                IDMP = CInt(row("IdMenu"))
                ' MenuStrip1.Items.Add(categorias)


                Dim Dt1 As New DataTable
                Dim Dadapter1 As SqlDataAdapter
                Dim menu1 = New SqlCommand("SP_MENU_DINAMICO_OPCIONES", cn)
                menu1.CommandType = CommandType.StoredProcedure
                menu1.Parameters.AddWithValue("@IdRol", CInt(Trim(codirol.Text)))
                menu1.Parameters.AddWithValue("@IdMenuPadre", IDMP)
                Dadapter1 = New SqlDataAdapter(menu1)
                Dadapter1.Fill(Dt1)
                For Each row1 As DataRow In Dt1.Rows
                    Dim opciones As New ToolStripMenuItem(CStr(row1("Descripcion")))
                    categorias.DropDownItems.Add(opciones)
                    AddHandler opciones.Click, AddressOf windowNewMenu_Click
                    MenuStrip1.Items.Add(categorias)
                Next
            Next
            cn.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Mensaje", MessageBoxButtons.OK)
            cn.Close()
        Finally
        End Try
    End Sub

Código: [Seleccionar]
    Public Sub windowNewMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            CallByName(Me, CType(sender, ToolStripMenuItem).Text, CallType.Method)
        Catch ex As Exception

        End Try
    End Sub

funcion para mostrar el frm la cual creo por todos los frm
Código: [Seleccionar]
Public Sub NUEVO_PROVEEDOR()
        If Application.OpenForms("Frm_Proveedores") IsNot Nothing Then
            ' form is opened, so activate it
            'MessageBox.Show("Ventana ya está abierta")
            Application.OpenForms("Frm_Proveedores").Activate()
        Else
            Dim FORMULARIO As New Frm_Proveedores
            FORMULARIO.MdiParent = Me
            FORMULARIO.Dock = DockStyle.Fill
            FORMULARIO.Text = "                                                                                                                                      NUEVO PROVEEDOR"
            FORMULARIO.Show()
        End If
    End Sub

estaré muy agradecido por su ayuda, ya que yo u tu al ya no ayo que hacer ya estuve pro van do codigos que estan en inter

Desconectado fre_saga

  • Sv Member
  • ***
  • Mensajes: 275
Re:ayudar a motrar frm con menu dinamico vb
« Respuesta #1 : octubre 28, 2013, 04:16:22 pm »
ya logre resolver el problema para mostrar los frm  comparto la solución

Código: [Seleccionar]
Imports System.Reflection
evento para mostrar el frm seleccionado en el menu

    Public Sub windowNewMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Try
            'CallByName(Me, CType(sender, ToolStripMenuItem).Name, CallType.Method)
            Dim a As String
            a = CType(sender, ToolStripMenuItem).Name
           
            If Application.OpenForms(a) IsNot Nothing Then
                ' form is opened, so activate it
                'MessageBox.Show("Ventana ya está abierta")
                Application.OpenForms(a).Activate()
            Else
                Dim frm As New Form
                Dim formName As String = CType(sender, ToolStripMenuItem).Name
                formName = [Assembly].GetEntryAssembly.GetName.Name & "." & formName
                frm = DirectCast([Assembly].GetEntryAssembly.CreateInstance(formName), Form)
                frm.MdiParent = Me
                frm.Dock = DockStyle.Fill
                frm.Show()
            End If
        Catch ex As Exception

        End Try
    End Sub

me ayudan con el tratamiento de excepciones y error  para mostrarle al usuario un mensaje estándar y que guarde en un archivo los errores que genera para poder acceder después a dichos errores