none
ODONTOGRAMA RRS feed

  • Pregunta

  • BUENAS TARDES! 

    ESTOY REALIZANDO UN ODNTOGRMA PARA MI TRABAO DE FIN DE GRADOM DENTRO DE UN APLICACION DE GESTION DE PACIENTE, 

    AL GUARDAR LA INFORMACION DENTRO DE LA BASE DE DATOS, ME GUARDO LA LISTBOX COMO CADENA STRING Y LUEGO LA VUELVO A TRAER CON EL SPILT, EN LA LISTBOX ME REFLEJA LOS DATOS GUARDADOS PERO NO ME PINTA LAS PIEZAS DENTALES CON ESOS DATOS. OS

    DEJO EL CODIGO DEL ODONTOGRAMA, UNA CAPTURA DEL FORMULARIO M Y UNA CAPTURA DE LA BASE DA DATOS A VER SI ME PODEIs ECHAR UN MANO.

    GRACIas

    Imports System.Drawing.Drawing2D
    Imports System.Data.OleDb
    Imports System.IO
    Public Enum PartesPiezaDental
            Superior
            Inferior
            Derecha
            Izquierda
            Centro
            Desconocida
        End Enum
        Public Class Frmodontograma
        Dim odontograma As String
        Dim er As Integer
    
        Private piezas As List(Of PiezaDental)
        Private colorSeleccionado As Brush
    
        Private Sub Frmodontograma_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            piezas = New List(Of PiezaDental) From {New PiezaDental(40, 280, 40, 40, 1), New PiezaDental(90, 280, 40, 40, 2), New PiezaDental(140, 280, 40, 40, 3), New PiezaDental(190, 280, 40, 40, 4), New PiezaDental(240, 280, 40, 40, 5), New PiezaDental(290, 280, 40, 40, 6), New PiezaDental(340, 280, 40, 40, 7), New PiezaDental(390, 280, 40, 40, 8), New PiezaDental(440, 280, 40, 40, 9), New PiezaDental(490, 280, 40, 40, 10), New PiezaDental(540, 280, 40, 40, 11), New PiezaDental(590, 280, 40, 40, 12), New PiezaDental(640, 280, 40, 40, 13), New PiezaDental(690, 280, 40, 40, 14), New PiezaDental(740, 280, 40, 40, 15), New PiezaDental(790, 280, 40, 40, 16), New PiezaDental(280, 360, 30, 30, 17), New PiezaDental(320, 360, 30, 30, 18), New PiezaDental(360, 360, 30, 30, 19), New PiezaDental(400, 360, 30, 30, 20), New PiezaDental(440, 360, 30, 30, 21), New PiezaDental(480, 360, 30, 30, 22), New PiezaDental(520, 360, 30, 30, 23), New PiezaDental(560, 360, 30, 30, 24), New PiezaDental(600, 360, 30, 30, 25), New PiezaDental(640, 360, 30, 30, 26), New PiezaDental(280, 440, 30, 30, 27), New PiezaDental(320, 440, 30, 30, 28), New PiezaDental(360, 440, 30, 30, 29), New PiezaDental(400, 440, 30, 30, 30), New PiezaDental(440, 440, 30, 30, 31), New PiezaDental(480, 440, 30, 30, 32), New PiezaDental(520, 440, 30, 30, 33), New PiezaDental(560, 440, 30, 30, 34), New PiezaDental(600, 440, 30, 30, 35), New PiezaDental(640, 440, 30, 30, 36), New PiezaDental(40, 520, 40, 40, 37), New PiezaDental(90, 520, 40, 40, 38), New PiezaDental(140, 520, 40, 40, 39), New PiezaDental(190, 520, 40, 40, 40), New PiezaDental(240, 520, 40, 40, 41), New PiezaDental(290, 520, 40, 40, 42), New PiezaDental(340, 520, 40, 40, 43), New PiezaDental(390, 520, 40, 40, 44), New PiezaDental(440, 520, 40, 40, 45), New PiezaDental(490, 520, 40, 40, 46), New PiezaDental(540, 520, 40, 40, 47), New PiezaDental(590, 520, 40, 40, 48), New PiezaDental(640, 520, 40, 40, 49), New PiezaDental(690, 520, 40, 40, 50), New PiezaDental(740, 520, 40, 40, 51), New PiezaDental(790, 520, 40, 40, 52)}
    
    
            rdbrojo.Tag = Brushes.Red
            rdbazul.Tag = Brushes.Blue
            rdbverde.Tag = Brushes.Green
            Me.DoubleBuffered = True
            UsuarioID.Text = FrmInicio.Label3.Text
            If cn.State = ConnectionState.Open Then
                cn.Close()
            End If
            Module1.conn()
            cn.Open()
            ds.Clear()
    
            If cn.State = ConnectionState.Open Then
                cn.Close()
            End If
            Module1.conn()
            cn.Open()
            er = 1
            'cn.Open()
            str = "Select * from OdontogramaTable"
            da.SelectCommand = cmd
            da.Fill(ds, "OdontogramaTable")
        End Sub
    
        Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
                For Each p As PiezaDental In piezas
                    p.Dibuja(e.Graphics)
                Next
            End Sub
            ' Detecta la parte de la pieza dental donde ocurre el mouse down.
            ' Asigna el color a la parte según la herramienta seleccionada (radiobuttons).
            ' Actualiza la vista.
            Private Sub Form1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
                For Each p As PiezaDental In piezas
                    Dim ppd As PartesPiezaDental = p.DetectaPartePiezaDental(e.Location)
                    If ppd = PartesPiezaDental.Desconocida Then Continue For
                    Dim br As Brush = If(e.Button = Windows.Forms.MouseButtons.Left, colorSeleccionado, Brushes.White)
                    p.ColoreaParte(br, ppd)
                    Invalidate(p.RectPartePiezaDental(ppd))
                    Dim lsItem As String = p.numero.ToString & " - "
                    If Me.rdbAzul.Checked = True Then
                        lsItem &= "Azul"
                    ElseIf Me.rdbRojo.Checked = True Then
                        lsItem &= "Rojo"
                    Else
                        lsItem &= "Verde"
                    End If
                    lsItem &= " - " & e.Location.ToString
                    Me.ListBox1.Items.Add(lsItem)
                    Exit For
                Next
            End Sub
            Private Sub HerramientaSeleccionColor(sender As System.Object, e As System.EventArgs) Handles rdbRojo.CheckedChanged, rdbAzul.CheckedChanged, rdbVerde.CheckedChanged
                colorSeleccionado = CType(Controls.OfType(Of RadioButton).Where(Function(rb) rb.Checked).First.Tag, Brush)
            End Sub
    
        Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
            Me.Close()
            FrmB.Show()
    
        End Sub
    
        Private Sub UsuarioID_TextChanged(sender As Object, e As EventArgs) Handles UsuarioID.TextChanged
    
        End Sub
    
        Private Sub BtGuardarHM_Click(sender As Object, e As EventArgs) Handles BtGuardarHM.Click
             Dim lista2 As New List(Of String)
    
    
            For Each item As String In ListBox1.Items
    
                lista2.Add(item)
            Next
            odontograma = String.Join(vbLf, lista2.ToArray())
    
            If er = 0 Then
                Try
                    cmd.Connection = cn
                    cmd.CommandText = "insert into OdontogramaTable (NHC, Odontograma) values('" & txtNHC.Text & "','" & odontograma & "')"
                    cmd.ExecuteNonQuery()
                Catch ex As exception
                End Try
            End If
    
        End Sub
    
        Private Sub txtNHC_TextChanged(sender As Object, e As EventArgs) Handles txtNHC.TextChanged
            ListBox1.DataSource = Nothing
            Dim ctr, i, cond As Integer
            cond = 1
            ds.Clear()
            str = "select * from OdontogramaTable where NHC = '" & txtNHC.Text & "'"
            cmd = New OleDbCommand(str, cn)
            da.SelectCommand = cmd
            da.Fill(ds, "OdontogramaTable")
            ctr = ds.Tables("OdontogramaTable").Rows.Count - 1
            For i = 0 To ctr
                txtNHC.Text = ds.Tables("OdontogramaTable").Rows(i)(0).ToString
                Dim cade3 As String = ds.Tables("OdontogramaTable").Rows(i)(1).ToString()
    
                ListBox1.DataSource = cade3.Split(vbLf)
            Next
    
        End Sub
    End Class
    Public Class PiezaDental
            Private partes(4) As GraphicsPath
            Private colores(4) As Brush
            Public numero As Integer
            Public Sub New(x As Integer, y As Integer, cx As Integer, cy As Integer, vinumero As Integer)
                Dim pt1 As Point = New Point(x, y)
                Dim pt2 As Point = New Point(x + cx, y)
                Dim pt3 As Point = New Point(x, y + cy)
                Dim pt4 As Point = New Point(x + cx, y + cy)
                Dim pt5 As Point = New Point(x + cx \ 3, y + cy \ 3)
                Dim pt6 As Point = New Point(x + 2 * cx \ 3, y + cy \ 3)
                Dim pt7 As Point = New Point(x + cx \ 3, y + 2 * cy \ 3)
                Dim pt8 As Point = New Point(x + 2 * cx \ 3, y + 2 * cy \ 3)
                '
                partes(PartesPiezaDental.Superior) = New GraphicsPath()
                partes(PartesPiezaDental.Superior).AddPolygon(New Point() {pt1, pt2, pt6, pt5})
                colores(PartesPiezaDental.Superior) = Brushes.White
                '
                partes(PartesPiezaDental.Izquierda) = New GraphicsPath()
                partes(PartesPiezaDental.Izquierda).AddPolygon(New Point() {pt1, pt3, pt7, pt5})
                colores(PartesPiezaDental.Izquierda) = Brushes.White
                '
                partes(PartesPiezaDental.Inferior) = New GraphicsPath()
                partes(PartesPiezaDental.Inferior).AddPolygon(New Point() {pt3, pt4, pt8, pt7})
                colores(PartesPiezaDental.Inferior) = Brushes.White
                '
                partes(PartesPiezaDental.Derecha) = New GraphicsPath()
                partes(PartesPiezaDental.Derecha).AddPolygon(New Point() {pt4, pt2, pt6, pt8})
                colores(PartesPiezaDental.Derecha) = Brushes.White
                '
                partes(PartesPiezaDental.Centro) = New GraphicsPath()
                partes(PartesPiezaDental.Centro).AddPolygon(New Point() {pt5, pt6, pt8, pt7})
                colores(PartesPiezaDental.Centro) = Brushes.White
                '
                numero = vinumero
            End Sub
            Public Sub Dibuja(g As Graphics)
                For Each p As GraphicsPath In partes
                    g.FillPath(colores(Array.IndexOf(partes, p)), p)
                    g.DrawPath(Pens.Black, p)
                Next
            End Sub
            Public Function DetectaPartePiezaDental(pt As Point) As PartesPiezaDental
                For Each p As GraphicsPath In partes
                    If p.IsVisible(pt) Then
                        Return CType(Array.IndexOf(partes, p), PartesPiezaDental)
                    End If
                Next
                Return PartesPiezaDental.Desconocida
            End Function
            Public Sub ColoreaParte(b As Brush, p As PartesPiezaDental)
                colores(p) = b
            End Sub
            Public Function RectPartePiezaDental(p As PartesPiezaDental) As Rectangle
                Return Rectangle.Truncate(partes(p).GetBounds())
            End Function
    End Class


    lunes, 4 de febrero de 2019 14:44

Todas las respuestas

  • Hola  Mahfud96

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comento que estaremos realizando una revisión a profundidad acerca del inconveniente que se te está presentando.

    Proporcionaremos una respuesta lo más pronto posible.

    Gracias por usar los foros de MSDN.

    Pedro Alfaro
     ____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
    lunes, 4 de febrero de 2019 16:37
    Moderador
  • habeis encontrado alguna solucion?7
    viernes, 8 de febrero de 2019 17:08
  • Hola:
    Mira el siguiente enlace

    https://social.msdn.microsoft.com/Forums/es-ES/d653d0ad-19da-4c1e-8b53-593b3922bd5a/odontograma-dental-en-visualnet?forum=vbes

    Un saludo desde Bilbo
    Carlos


    domingo, 10 de febrero de 2019 9:14