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)
martes, 28 de febrero de 2012
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
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
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)
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
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
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...)
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
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
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
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
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
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
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
Suscribirse a:
Comentarios (Atom)