none
Odontograma Dental en Visual.Net RRS feed

Answers

  • piezas.IndexOf(p), te devuelve el índice del objeto dentro de la colección piezas.

    De todos modos, PiezaDental debería tener un campo Id, para una mejor identificación. Entonces simplemente harías p.Id

    Monday, February 16, 2015 5:25 PM

All replies

  • piezas.IndexOf(p), te devuelve el índice del objeto dentro de la colección piezas.

    De todos modos, PiezaDental debería tener un campo Id, para una mejor identificación. Entonces simplemente harías p.Id

    Monday, February 16, 2015 5:25 PM
  • Hola, como hago para que despues de guardar el Valor en una Tabla, al cargar el form me dibuje o pnte con base en los valores, es decir; si yo marco

    1,2,3

    Donde :

    1 es el Indice del Objeto

    2 es el Location o lugar del Objeto

    3 es el RadioButtom que seleccione

    Es decir pinto el Objeto Uno de Color Rojo en la parte superior, que cuando cargue el form me lo piente de acuerdo a esas caracteristicas.

    Como hago par Pintar una figura sobre la figura, ejemplo:

    Poner una X sobre la Pieza.

    Gracias

    Monday, July 27, 2015 6:53 PM
  • 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
    Saturday, February 9, 2019 4:15 PM
  • Hola:
    Yo tengo una aplicacion que es "muy parecida" a lo que estas haciendo.
    Se diferencia en la forma de guardar los datos.
    En esa aplicacion se usan 3 tablas cuyas estructuras son:

    Se selecciona un cliente, se carga la tabla PLANTILLA DENTAL y a continuacion se carga la tabla DIENTE para ese cliente.
    El resultado es la siguiente imagen

    Cuando se hace click en un diente se muestra lo siguiente

    P.D.
    Espero que se entienda, en caso contrario volver a preguntar.

    Un saludo desde Bilbo
    Carlos

    Sunday, February 10, 2019 8:47 AM
  • como se hace el la consulta para traer esos datos a visual basic.netM 

    quero decir select from table .... where paciente id = textbox1,text 

    y luego para ir rellenando ls rectangulos con esa infromacion que pongo un for o que, es que esto atascado aqui.

    muchismas gracias por responderme , me harias un gran favor , so estudainte de odontologa y este es mi tfg y todo lo que he hecho lo h ido aprendiendo y no tengo mucha idea de programcion.

    mila mila esker!

    Sunday, February 10, 2019 11:10 AM
  • Hola:
    El Form de inicio es el de clientes. En este Form se selecciona un cliente.
    Desde un boton, se llama a un Form que se llama FrmPlantilla, pasandole un parametro que es el identificador del cliente como se muestra en el siguiente código

            Using loForm As New FrmPlantilla
                loForm.Cliente = CInt(Me.txtIdCliente.Text)
                loForm.ShowDialog()
            End Using

    El FrmPlantilla es un Form sin ningun control, su codigo es el siguiente

    Imports System.Data.SqlClient
    Public Enum PartesPiezaDental
        Superior
        Inferior
        Derecha
        Izquierda
        Centro
        Desconocida
    End Enum
    Public Class FrmPlantilla
        Public Property Cliente As Integer
        Private Plantilla As New List(Of PiezaDental)
        Private mdtDientes As New DataTable
        Private Sub FrmInicial_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            Try
                Dim lsQuery As String = "SELECT * FROM plantilla_dental ORDER BY numero"
                ' Coargamos la plantilla dental.
                Using loConexion As New SqlConnection(Comun.msCadenaSQL)
                    loConexion.Open()
                    Using loComando As New SqlCommand(lsQuery, loConexion)
                        Dim PiezaDental As PiezaDental = Nothing
                        Using loDataReader As SqlDataReader = loComando.ExecuteReader()
                            Do While loDataReader.Read()
                                PiezaDental = New PiezaDental(CInt(loDataReader.Item("NUMERO")), CInt(loDataReader.Item("X")), CInt(loDataReader.Item("Y")), CInt(loDataReader.Item("CX")), CInt(loDataReader.Item("CY")))
                                Plantilla.Add(PiezaDental)
                            Loop
                        End Using
                    End Using
                End Using
                'Cargamos los colores de la plantilla
                ColoreaPlantilla()
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Load", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
        End Sub
        Public Sub ColoreaPlantilla()
            mdtDientes.Clear()
            Try
                Dim lsQuery As String = "SELECT diente, zona, rojo, verde, azul FROM diente WHERE cliente=@Cliente ORDER BY diente, zona"
                Using loConexion As New SqlConnection(Comun.msCadenaSQL)
                    Using loComando As New SqlCommand(lsQuery, loConexion)
                        loComando.Parameters.Add(New SqlParameter("@Cliente", Me.Cliente))
                        Using loDataAdapter As New SqlDataAdapter(loComando)
                            loDataAdapter.Fill(mdtDientes)
                        End Using
                    End Using
                End Using
                For Each Diente As DataRow In mdtDientes.Rows
                    ColoreaZona(CInt(Diente("diente")) - 1, CInt(Diente("zona")), CInt(Diente("rojo")), CInt(Diente("verde")), CInt(Diente("azul")))
                Next
            Catch ex As Exception
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            Me.DoubleBuffered = True
        End Sub
        Public Sub ColoreaZona(ByVal viDiente As Integer, ByVal viZona As Integer, ByVal viRojo As Integer, ByVal viVerde As Integer, ByVal viAzul As Integer)
            Dim lDiente As PiezaDental = Plantilla(viDiente)
            Dim lColor As Color = Color.FromArgb(viRojo, viVerde, viAzul)
            Dim lBrush As Brush = New SolidBrush(lColor)
            lDiente.ColoreaParte(lBrush, viZona)
        End Sub
        Private Sub FrmPlantilla_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
            For Each PiezaDental As PiezaDental In Plantilla
                PiezaDental.Dibuja(e.Graphics)
            Next
        End Sub
        ' Detecta la pieza dental donde ocurre el mouse down.
        Private Sub FrmPlantilla_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
            If e.Button = Windows.Forms.MouseButtons.Right Then
                Me.Close()
            Else
                Dim liNumPiezaDental As Integer = 0
                For Each PiezaDental As PiezaDental In Plantilla
                    Dim ppd As PartesPiezaDental = PiezaDental.DetectaPartePiezaDental(e.Location)
                    If ppd = PartesPiezaDental.Desconocida Then
                        Continue For
                    Else
                        liNumPiezaDental = PiezaDental.miNumero
                    End If
                    Exit For
                Next
                If liNumPiezaDental = 0 Then
                    MessageBox.Show("Hay que hacer ckick sobre algun diente")
                    Return
                End If
                Dim Resultado As DialogResult
                Using loForm As New FrmDiente
                    loForm.Cliente = Me.Cliente
                    loForm.Diente = liNumPiezaDental
                    loForm.ShowDialog()
                    Resultado = loForm.DialogResult
                End Using
                If Resultado = Windows.Forms.DialogResult.OK Then
                    Me.Close()
                End If
            End If
        End Sub
    End Class

    En el Load, se dibuja la plantilla, despues se colorean los dientes del cliente seleccionado
    Cuando se se hace click con el boton izquierdo en un diente dado, se llama al FrmDiente y se le pasan como parametros el identificador del cliente y el identificador del diente
    Este FrmDiente se utiliza para insertar/modificar/eliminar los colores de un diente dado de un cliente dado
    El codigo de este Form es el siguiente

    Imports System.Data.SqlClient
    Public Class FrmDiente
        Private msQuery As String
        Public Property Cliente As Integer
        Public Property Diente As Integer
        Private mdtDiente As New DataTable
        Private mbSwCambio As Boolean
        Private mbNuevo As Boolean
        Private mbSiNo As Boolean = False
        Private Sub FrmDiente_Load(sender As Object, e As EventArgs) Handles Me.Load
            msQuery = "SELECT * FROM diente where cliente=" & Cliente.ToString & " AND diente=" & Diente.ToString & " ORDER BY zona"
            Me.dudZona.Items.Add(New AddItem("Superior", 0))
            Me.dudZona.Items.Add(New AddItem("Inferior", 1))
            Me.dudZona.Items.Add(New AddItem("Derecha", 2))
            Me.dudZona.Items.Add(New AddItem("Izquierda", 3))
            Me.dudZona.Items.Add(New AddItem("Centro", 4))
            Comun.gP_ActualizaGrid(Me.dgrDatos, msQuery)
            ' estilo para la cabecera
            Dim styCabecera As DataGridViewCellStyle
            styCabecera = New DataGridViewCellStyle()
            styCabecera.BackColor = Color.LightBlue
            styCabecera.ForeColor = Color.DarkOliveGreen
            styCabecera.Font = New Font("Bradley Hand ITC", 10, FontStyle.Bold)
            styCabecera.Alignment = DataGridViewContentAlignment.BottomCenter
            Me.dgrDatos.ColumnHeadersDefaultCellStyle = styCabecera
            ' desactivar la visualización de tooltips en las celdas
            Me.dgrDatos.ShowCellToolTips = False
            ' crear y aplicar un estilo al grid
            Dim styTexto As New DataGridViewCellStyle()
            styTexto.BackColor = Color.Aquamarine
            styTexto.ForeColor = Color.Gray
            styTexto.Font = New Font("Courier New", 10, FontStyle.Bold)
            Me.dgrDatos.DefaultCellStyle = styTexto
            Me.grbDatos.ContextMenuStrip = cmenu
        End Sub
        Private Sub NuevoToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NuevoToolStripMenuItem.Click
            Comun.gP_HabilitaDetalle(Me, False)
            Me.ToolStripButtonEliminar.Enabled = False
            Me.dudZona.Enabled = True
            lP_QuitarHandle()
            Me.dudZona.SelectedIndex = 0
            Me.rdbRojo.Checked = False
            Me.rdbVerde.Checked = False
            Me.rdbAzul.Checked = False
            Me.dudZona.Focus()
            mbNuevo = True
            mbSwCambio = False
            lP_PonerHandle()
        End Sub
        Private Sub SalirToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SalirToolStripMenuItem.Click
            If mbSiNo = True Then
                Me.DialogResult = Windows.Forms.DialogResult.OK
            Else
                Me.DialogResult = Windows.Forms.DialogResult.No
            End If
            Me.Close()
        End Sub
        Private Sub ToolStripBotones_ItemClicked(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles ToolStripBotones.ItemClicked
            lP_Botones(CType(e.ClickedItem, ToolStripItem).Text)
        End Sub
        Private Sub lP_Botones(ByVal vsMenuItemText As String)
            Select Case (vsMenuItemText)
                Case "&Aceptar"
                    lP_Aceptar()
                Case "&Cancelar"
                    lP_Cancelar()
                Case "&Eliminar"
                    lP_Eliminar()
            End Select
        End Sub
        Private Sub dgrDatos_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgrDatos.CellClick
            If Me.dgrDatos.RowCount = 0 Then
                Return
            End If
            Comun.gP_HabilitaDetalle(Me, False)
            Me.ToolStripButtonEliminar.Enabled = True
            Me.dudZona.Enabled = False
            lP_QuitarHandle()
            Dim loFila As DataGridViewRow = Me.dgrDatos.CurrentRow()
            Me.dudZona.SelectedIndex = Convert.ToInt16(loFila.Cells("ZONA").Value)
            If Convert.ToInt16(loFila.Cells("ROJO").Value) > 0 Then
                Me.rdbRojo.Checked = True
            ElseIf Convert.ToInt16(loFila.Cells("VERDE").Value) > 0 Then
                Me.rdbVerde.Checked = True
            Else
                Me.rdbAzul.Checked = True
            End If
            Me.dudZona.Focus()
            mbNuevo = False
            mbSwCambio = False
            lP_PonerHandle()
        End Sub
        Private Sub lP_Aceptar()
            If mbSwCambio = True Then
                mbSwCambio = False
            Else
                MessageBox.Show("No se han realizado cambios", "lP_Aceptar", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
                Return
            End If
            'Controlamos si los datos han sido introducidos
            Me.Cursor = Cursors.WaitCursor
            If Me.ValidateChildren = False Then
                Me.Cursor = Cursors.Default
                MessageBox.Show("Datos erroneos", "lP_Aceptar", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Return
            End If
            Try
                Dim lsQuery As String
                Dim liRojo As Integer = 0
                Dim liVerde As Integer = 0
                Dim liAzul As Integer = 0
                If Me.rdbRojo.Checked = True Then
                    liRojo = 255
                ElseIf Me.rdbVerde.Checked = True Then
                    liVerde = 255
                Else
                    liAzul = 255
                End If
                Using loConexion As New SqlConnection(Comun.msCadenaSQL)
                    If mbNuevo = True Then
                        lsQuery = "Insert Into DIENTE (CLIENTE, DIENTE, ZONA, ROJO, VERDE, AZUL) Values (@Cliente, @Diente, @Zona, @Rojo, @Verde, @Azul)"
                    Else
                        lsQuery = "Update DIENTE Set ROJO=@Rojo, VERDE=@Verde, AZUL=@Azul Where CLIENTE=@Cliente AND DIENTE=@Diente AND ZONA=@Zona"
                    End If
                    ' crear comando
                    Using loComando As New SqlCommand(lsQuery, loConexion)
                        ' crear parametro
                        loComando.Parameters.Add(New SqlParameter("@Cliente", Me.Cliente))
                        loComando.Parameters.Add(New SqlParameter("@Diente", Me.Diente))
                        loComando.Parameters.Add(New SqlParameter("@Zona", Me.dudZona.SelectedIndex))
                        loComando.Parameters.Add(New SqlParameter("@Rojo", liRojo))
                        loComando.Parameters.Add(New SqlParameter("@Verde", liVerde))
                        loComando.Parameters.Add(New SqlParameter("@Azul", liAzul))
                        loConexion.Open()   ' abrir conexión
                        loComando.ExecuteNonQuery()
                        If mbSiNo = False Then
                            mbSiNo = True
                        End If
                    End Using
                End Using
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "lP_Aceptar", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            Comun.gP_ActualizaGrid(Me.dgrDatos, msQuery)
            Me.Cursor = Cursors.Default
            Comun.gP_HabilitaDatos(Me, False)
        End Sub
        Private Sub lP_Cancelar()
            Comun.gP_HabilitaDatos(Me, False)
        End Sub
        Private Sub lP_Eliminar()
            Dim loFila As DataGridViewRow = Me.dgrDatos.CurrentRow()
            Dim lsMensage As String = "¿Esta seguro de querer eliminar esta Zona?" & vbCrLf & loFila.Cells("DIENTE").Value.ToString() & " - " & loFila.Cells("ZONA").Value.ToString()
            If MessageBox.Show(lsMensage, "lP_Eliminar", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.DefaultDesktopOnly) = Windows.Forms.DialogResult.No Then
                Return
            End If
            Try
                Dim lsQuery As String = "Delete From DIENTE Where CLIENTE=@Cliente AND DIENTE=@Diente AND ZONA=@Zona"
                Using loConexion As New SqlConnection(Comun.msCadenaSQL)
                    ' crear comando
                    Using loComando As New SqlCommand(lsQuery, loConexion)
                        loComando.Parameters.Add(New SqlParameter("@Cliente", loFila.Cells("CLIENTE").Value))
                        loComando.Parameters.Add(New SqlParameter("@Diente", loFila.Cells("DIENTE").Value))
                        loComando.Parameters.Add(New SqlParameter("@Zona", loFila.Cells("ZONA").Value))
                        loConexion.Open()   ' abrir conexión
                        loComando.ExecuteNonQuery()
                        If mbSiNo = False Then
                            mbSiNo = True
                        End If
                    End Using
                End Using
            Catch Exp As Exception
                MessageBox.Show(Exp.Message, "lP_Eliminar", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            Comun.gP_ActualizaGrid(Me.dgrDatos, msQuery)
            Comun.gP_HabilitaDatos(Me, True)
        End Sub
        Private Sub lP_Cambio(ByVal sender As System.Object, ByVal e As System.EventArgs)
            mbSwCambio = True
        End Sub
        Private Sub lP_PonerHandle()
            AddHandler dudZona.SelectedItemChanged, AddressOf lP_Cambio
            AddHandler rdbRojo.CheckedChanged, AddressOf lP_Cambio
            AddHandler rdbVerde.CheckedChanged, AddressOf lP_Cambio
            AddHandler rdbAzul.CheckedChanged, AddressOf lP_Cambio
        End Sub
        Private Sub lP_QuitarHandle()
            RemoveHandler dudZona.SelectedItemChanged, AddressOf lP_Cambio
            RemoveHandler rdbRojo.CheckedChanged, AddressOf lP_Cambio
            RemoveHandler rdbVerde.CheckedChanged, AddressOf lP_Cambio
            RemoveHandler rdbAzul.CheckedChanged, AddressOf lP_Cambio
        End Sub

        Private Sub dgrDatos_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles dgrDatos.CellPainting
            Comun.gP_NumeraFilas(sender, e)
        End Sub
    End Class

    Los 2 ultimos graficos son las de FrmPlantilla y FrmDiente
    Si pones una direccion de correo, te paso todo el codigo

    Un saludo desde Bilbo
    Carlos

    Sunday, February 10, 2019 1:04 PM
  • bachirmahfud@gmail.com

    Si usted es de bilbao le debo una buena comida o cena por Gasteiz.

    No sabe el favor que me hace.

    Muchismas graciasss

    Sunday, February 10, 2019 1:56 PM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos

    Tuesday, February 12, 2019 10:06 AM
  • hola amigo como estas, me podrias enviar a mi tambien el proyecto que guarda los colores tengo la misma situacion, el fin es para terminar mi tesis de graduacion, saludos!

    mi correo es: djkoyi05@gmail.com

    Monday, March 25, 2019 7:26 PM
  • OLA AMIGOS, ESTOU TENDO DIFICULDADE, ALGUÉM PODE ME AJUDAR POR  FAVOR?

    JÁ FIZ O ODONTOGRAMA COM O CÓDIGO POSTADO  AQUI, MAS ESTOU TENDO DIFICULDADE EM 

    COMO GUARDAR O ODONTOGRAMA EM UM BANCO SQL E DEPOIS COMO RESGATAR ELE E MOSTRAR 

    MEU EMAIL É agostinhoscunha@bol.com.br 

    Thursday, April 4, 2019 9:25 AM
  • Hola Carlos:

    Inicie ese proyecto, por favor me puedes facilitar el código.

    mi mail: lilianaps2003@hotmail.com

    Gracias

    Saludos

    Tuesday, May 28, 2019 3:06 AM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos

    Tuesday, May 28, 2019 7:22 AM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos

    Tuesday, May 28, 2019 7:24 AM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos

    Tuesday, May 28, 2019 7:25 AM
  • Saludos,

    He visto su código y me gustaría saber si me puede compartir el proyecto. Ya se que ha pasado bastante tiempo desde entonces.

    Le agradezco por su ayuda.

    andres collazos

    acmdo@protonmail.com

    Tuesday, September 3, 2019 2:42 PM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Wednesday, September 4, 2019 9:20 PM
  • Hola mi email es ivanzs@hotmail.com  agradeceria mucho ver su código fuente.

    Gracias
    Friday, September 20, 2019 11:57 PM
  • hola me podrias compartir tu proyecto conmigo por favor, te agradecería mucho!

    rambomauricio@gmail.com

    Saturday, September 21, 2019 12:37 AM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Saturday, September 21, 2019 5:40 AM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Saturday, September 21, 2019 5:40 AM
  • Hola Carlos, muchos saludos. Por favor me podrias compartir tu proyecto conmigo, te lo agradecería muchisimo. Mi correo es:  anamecos@hotmail.com
    Monday, October 14, 2019 12:08 PM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Monday, October 14, 2019 2:46 PM
  • Hola, Dios te bendiga.

    Me podrías facilitar  el códgo de tu proyecto? estoy desarrollando una aplicación para una clínica de odontología y el odontograma está bastante complicado.

    mi email es cagr27@gmail.com

    Gracias

    Thursday, October 31, 2019 3:39 PM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Thursday, October 31, 2019 7:54 PM
  • Estimados no cuesta nada agradecer el trabajo votando como útil, es una forma de agradecer también

    Saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗

    Sunday, November 3, 2019 11:56 AM
  • Hi Can i have a copy of your project ? thank you

    incitement2007@hotmail.com

    Wednesday, November 20, 2019 6:35 PM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Wednesday, November 20, 2019 9:04 PM
  • Hola buen dia, me podrías facilitar el código porfavor apenas realizó el sistema para una clínica y solo me falta el odontlgrama es algo complejo     mi correo es wibi_lalo@hotmail.com
    Wednesday, November 27, 2019 7:30 PM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Saturday, November 30, 2019 6:02 AM
  • Hola buenos dias, me podria facilitar el codigo por favor,es para un trabajo universitario.

    mi correo es j.danielito9916@gmail.com

    De ante mano muchas gracias.

    Wednesday, December 4, 2019 7:15 AM
  • El objetivo es hacer tu tarea, pero material hay en internet, https://www.lawebdelprogramador.com/codigo/buscar.php?opc=1&charSearch=odonto
    Wednesday, December 4, 2019 11:42 AM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Wednesday, December 4, 2019 7:03 PM
  • Hola, como estas me puedes enviar el proyecto de odontologia a mi correo?? mi correo es diegopcz@hotmail.com

    Muchas gracias y saludos desde Ecuador


    diego

    Friday, December 20, 2019 9:24 PM
  • Hola:
    Proyecto enviado

    Un saludo desde Bilbo
    Carlos
    Saturday, December 21, 2019 5:36 AM
  • Hola muy buenas.

    No sé si será posible todavía mandarme el proyecto. Te estaría muy agradecido.

    Mi correo es ahernandezselva@hotmail.com

    Muchísimas gracias de antemano

    Friday, April 3, 2020 5:18 PM
  • Hola:

    Proyecto enviado

    Un saludo desde Bilbo

    Carlos

    Saturday, April 4, 2020 9:22 AM
  • Hola Carlos, perdona la molestia, espero estés bien y tu familia también en este momento tan complicado que nos toca vivir. te agradezco si me pudieras enviar el proyecto a oscaleyala@hotmail.com 

    Muchas gracias por el aporte y compartirlo. Saludos cordiales.

    Sunday, May 17, 2020 2:26 PM
  • Hola:

    Proyecto enviado

    Un saludo desde Bilbo

    Carlos

    Sunday, May 17, 2020 4:52 PM
  • Hola Carlos, perdona, pero te escribo otra dirección  de correo porque no recibí nada en mi hotmail. gracias

    oscaleyala@gmail.com

    Wednesday, May 20, 2020 2:14 PM
  • Hola:

    Proyecto enviado

    Un saludo desde Bilbo

    Carlos

    Wednesday, May 20, 2020 2:45 PM
  • Hola, podrias pasarme el código porfavor mi correo es: keylor96lopezp@gmail.com, de ante manos muchas gracias por tan valioso aporte.

    Sunday, July 12, 2020 12:36 PM
  • Hola:

    Proyecto enviado

    Un saludo desde Bilbo

    Carlos

    Monday, July 13, 2020 4:36 PM