martes, 28 de febrero de 2012

Acciones con el BindingSource

Acciones que podemos hacer con un bindingsource

 Ir al siguiente registro -----> EmpleadoBindingSource.MoveNext()
 Ir al anterior registro -----> EmpleadoBindingSource.MovePrevious()
Ir al primero registro -------> EmpleadoBindingSource.MoveFirst()
Ir al último registro ---------> EmpleadoBindingSource.MoveLast()

Añade un nuevo registro -------->   EmpleadoBindingSource.AddNew()
Borra el registro seleccionado actual -------> EmpleadoBindingSource.RemoveCurrent()

Guarda los cambios ---->

         EmpleadoBindingSource.EndEdit()    (Termina la edición y guarda los cambios)
        OleDbDataAdapter1.Update(DataSet11)  (Guarda esos cambios en la base de datos)

lunes, 27 de febrero de 2012

Conexión a base de datos forma 2 bd2

Arrastrar un Datagridview

Elegir origen de datos --> Agregar origen de datos de proyecto....

Se crea un Dataset un BindingSource y un TableAdapter

El evento de rellenar del load se ha generado solo

Conexión a base de datos forma 1 bd1

Agregar los elementos oledb desde la pestaña datos del cuadro de herramientas

Explorador de Servidores -->Conexiones de datos --> Agregar conexión
 Archivos de bases de datos de Microsoft Access (en este caso)

Arrastrar oledbdataadapter sobre el formulario, después de configurar se crea un OLedbconecction

Datos--> Generar conjunto de datos (se genera el dataset)

Arrastramos un datagridview --> Tareas de DatagridView y lo enlazamos a la tabla  (se crea el componente bindingsource)

rellenar los datos en el dataadapter con el dataset en el evento load


 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        OleDbDataAdapter1.Fill(DataSet11, "Clientes")
    End Sub

domingo, 26 de febrero de 2012

LastIndexOf y substring

Lastindexof sirve para indicar la posición del ultimo carácter que hallamos indicado de una cadena
Substring es para obtener una subcadena dentro de un texto


 Dim texto As String
        Dim precio As Double
        Dim num As Integer
        Dim articulo As String
        texto = e.Data.GetData(DataFormats.Text).ToString
        num = texto.LastIndexOf(" ")
        precio = texto.Substring(num)
        articulo = texto.Substring(0, num)
        precio = precio + (precio * 0.1)
        texto = articulo & " " & precio
        Listventas.Items.Add(texto)
        Texttotal.Text = Texttotal.Text + precio


Con esto estamos cogiendo un precio que está separado por un texto entre un espacio, que podría ser ("Galletas 4") así num coge la posición del espacio, precio empieza a coger los caracteres desde ese espacio (el 4) y articulo coge desde la posición 0 hasta la posicion num ("Galletas") luego aumento el precio un 10% y vuelvo a pegar el texto


 Dim texto As String
        Dim precio As Double
        Dim num As Integer
        Dim articulo As String
        Dim precioaumentado As Double
        texto = e.Data.GetData(DataFormats.Text).ToString
        num = texto.LastIndexOf(" ")
        precio = texto.Substring(num)
        articulo = texto.Substring(0, num)
        precioaumentado = (precio * 100) / 110
        texto = articulo & " " & precioaumentado
        Listalmacen.Items.Add(texto)
        Texttotal.Text = Texttotal.Text - precio

este código lo que haces es devolver el precio a su estado original (quitándole el 10% del principio)

Arrastrar y soltar (DoDragDrop, DragEnter,DragDrop)

Primero de todo hay que elegir el objeto que se desea arrastrar y darle una condición del efecto (copiar,cortar...) en este caso copiar


Private Sub Listalmacen_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles Listalmacen.MouseDown
        Listalmacen.DoDragDrop(Listalmacen.SelectedItem.ToString, DragDropEffects.Copy)
    End Sub

Al objeto de destino hay que ponerle la propiedad de AllowDrop a true

Después al objeto de destino hay que darle la opción de mirar que datos se están aceptando


  Private Sub Listventas_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Listventas.DragEnter
        If (e.Data.GetDataPresent(DataFormats.Text)) Then
            e.Effect = DragDropEffects.Copy
        Else
            e.Effect = DragDropEffects.None
        End If
    End Sub

Y lo siguiente es aceptar los datos


 Private Sub Listventas_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Listventas.DragDrop
        Listventas.Items.Add(e.Data.GetData(DataFormats.Text).ToString)
    End Sub

viernes, 24 de febrero de 2012

Compartir eventos con código (AddHandler, Adressof)

Cuando añadimos por ejemplo un nuevo toolstripmenuitem, y queremos que tenga el mismo evento click ya creado procederemos a AddHandler y Adressof


 Dim texto As String = ""
        Dim num As Integer
        Dim nuevotam As ToolStripMenuItem
        texto = InputBox("Introduce un tamaño de 8 a 40", "Tamaño")

        If IsNumeric(texto) Then

            If texto >= 8 And texto <= 40 And IsNumeric(num) Then

                Dim repe As Boolean
                Dim insertado As Boolean = False
                repe = repetido(texto)
                If repe = False Then
                    Dim i As Integer = 0
                    Do While i <= ContextMenuStrip2.Items.Count - 3 And insertado = False
                        If CDbl(texto) < ContextMenuStrip2.Items.Item(i).Text Then
                            nuevotam = New ToolStripMenuItem
                            nuevotam.Text = texto
                            Label1.Font = New System.Drawing.Font(fuente, CInt(nuevotam.Text), estilo)
                            ContextMenuStrip2.Items.Insert(i, nuevotam)
                            AddHandler nuevotam.Click, AddressOf ToolStripMenuItem2_Click
                            insertado = True
                        Else
                            i = i + 1
                        End If
                    Loop
                    If insertado = False Then

                        nuevotam = New ToolStripMenuItem
                        nuevotam.Text = texto
                        Label1.Font = New System.Drawing.Font(fuente, CInt(nuevotam.Text), estilo)
                        ContextMenuStrip2.Items.Insert(ContextMenuStrip2.Items.Count - 2, nuevotam)
                        AddHandler nuevotam.Click, AddressOf ToolStripMenuItem2_Click
                    End If
                Else
                    MessageBox.Show("Tamaño repetido")
                End If
            Else
                MessageBox.Show("Error #459215E2: El valor introducido no es un valor válido")
            End If
   
        End If


Como podemos ver, estamos creando un nuevo toolstripmenuitem para insertarlo, darle el formato al label1, con las características (el tamaño) de este, y después compartimos el evento click con un evento ya existente

martes, 21 de febrero de 2012

Fuente, tamaño y estilo

Para cambiar el estilo de un texto (en esta entrada la fuente)


       Dim fuente As String = Label1.Font.Name
        Dim tamanyo As Integer = Label1.Font.Size
        Dim estilo As FontStyle = Label1.Font.Style

        Label1.Font = New System.Drawing.Font(CStr(sender.text), tamanyo, estilo)

guardamos el estilo por defecto del label y luego le volvemos a darle el mismo estilo, cambiando la fuente por sender.text (que en este caso podría ser arial,verdana...)

lunes, 20 de febrero de 2012

Ismdicontainer y mdiparent

para hacer un form como el principal y los demás que se puedan abrir dentro de este, lo primero de todo es poner la propiedad del formulario IsMdiContainer a true después para abrir un formulario dentro de este habría que escribir este código dentro de un button o similar


 Private Sub TextoToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles TextoToolStripMenuItem.Click
        formtexto.MdiParent = Me
        formtexto.Show()
        TextoToolStripMenuItem.Enabled = False
    End Sub

en este caso es un botón de menu que no se podrá pulsar después, y conseguimos que se muestre el formulario formtexto

domingo, 19 de febrero de 2012

Tabcontrol, controls, format y ctype

Con el siguiente código se puede ver como recoger los diferentes objetos dentro de las pestañas de un tabcontrol, para controlarlo mas solo va a coger los checkbox y radiobuttons y los mostrará en dos listas, uno con el nombre del tab y del articulo y en la otra lista el precio con formato 0.00 para el que usamos format, con ctype convertimos los controls en checkbox o radiobutton para poder acceder a sus propiedades .checked


 For i = 0 To TabControl1.Controls.Count - 1
            For j = 0 To TabControl1.Controls(i).Controls.Count - 1
                If TypeOf TabControl1.Controls(i).Controls(j) Is RadioButton Then
                    If CType(TabControl1.Controls(i).Controls(j), RadioButton).Checked = True Then
                        Lista1.Items.Add(TabControl1.Controls(i).Text & " " & CType(TabControl1.Controls(i).Controls(j), RadioButton).Text)
                        Lista2.Items.Add(Format(CDbl(CType(TabControl1.Controls(i).Controls(j), RadioButton).Tag), "#,###.00"))
                        TextBox1.Text = TextBox1.Text + CDbl(CType(TabControl1.Controls(i).Controls(j), RadioButton).Tag)
                    End If

                Else
                    If TypeOf TabControl1.Controls(i).Controls(j) Is CheckBox Then
                        If CType(TabControl1.Controls(i).Controls(j), CheckBox).Checked = True Then
                            Lista1.Items.Add(TabControl1.Controls(i).Text & " " & CType(TabControl1.Controls(i).Controls(j), CheckBox).Text)
                            Lista2.Items.Add(Format(CDbl(CType(TabControl1.Controls(i).Controls(j), CheckBox).Tag), "#,###.00"))
                            TextBox1.Text = TextBox1.Text + CDbl(CType(TabControl1.Controls(i).Controls(j), CheckBox).Tag)
                        End If
                    End If
                End If
            Next
        Next

jueves, 16 de febrero de 2012

Sender, TypeOf y tag

Con este ejemplo se puede ver que se puede compartir el mismo evento para diferentes objetos, el objeto se desenlaza con el evento y se pasa a llamar sender que será el objeto que desencadene la opción y con el typeof podemos comprobar dentro de que clase de objeto se trata


    Private Sub Rsopa_Click(sender As System.Object, e As System.EventArgs) Handles Rsopa.Click, Rternera.Click, Rpollo.Click, Rpescado.Click, Rnatillas.Click, Rmacarrones.Click, Rhelado.Click, Rfruta.Click, Rflan.Click, Rarroz.Click, Cvino.Click, Cpan.Click, Cagua.Click, Combocafe.Click, Combocafe.SelectedIndexChanged
        If TypeOf sender Is RadioButton Then
            Me.Text = "Menú: " & sender.text & " " & sender.tag
            Ttotal.Text = CDbl(Ttotal.Text) + CDbl(sender.tag)
        End If

        If TypeOf sender Is CheckBox Then
            Me.Text = "Varios: " & sender.text & " " & sender.tag
            Ttotal.Text = CDbl(Ttotal.Text) + CDbl(sender.tag)
        End If

        If sender Is Combocafe Then
            If Combocafe.SelectedItem = "Sí" Then
                Me.Text = "Cafe" & " " & sender.tag
                Ttotal.Text = CDbl(Ttotal.Text) + CDbl(sender.tag)
            End If
        End If
    End Sub

el tag es una propiedad de cualquier objeto para almacenar un dato, en este ejemplo se almacena el precio

martes, 14 de febrero de 2012

Anular selección de un listbox

 Dim i As Integer
        For i = 0 To ListBox1.Items.Count - 1
            If ListBox1.GetSelected(i) = True Then
                ListBox1.SetSelected(i, False)
            End If
        Next

sábado, 11 de febrero de 2012

Keydown y e.keycode

Para controlar entradas de teclado especiales como la tecla enter o escape se llama al evento keydown (se puede ver la utilidad del keypress en la entrada anterior

Un ejemplo de como controlar el enter y el escape (en este caso con el enter pasamos de un control a otro y el escape cerrara el programa


  If e.KeyCode = Keys.Enter Then
            If txtOperando1.Focused = True Then
                txtOperando2.Focus()
            Else
                txtOperando1.Focus()
            End If
        End If

        If e.KeyCode = Keys.Escape Then
            Me.Close()
        End If

lunes, 6 de febrero de 2012

Keypress y e.handled

Si no queremos que se pueda pulsar una tecla que no sea numero o , coma (para una calculadora por ejemplo)

basta con este código


 If IsNumeric(e.KeyChar) = False And e.KeyChar <> "," Then
            e.Handled = True
        End If


Pistas:
Recuerda que es and, si pusiera un or nunca se cumpliría la excepción
El e.handled hay que ponerlo a true, así no se podrá escribir una letra por ejemplo