Visual Basic.NET - Crear Botones en tiempo de ejecución según bd

 
Vista:
sin imagen de perfil

Crear Botones en tiempo de ejecución según bd

Publicado por Alejandro Epalza (1 intervención) el 07/05/2015 04:00:17
Buenas, saludos.

Veamos si me pueden ayudar con este vaso, tengo una tabla en acces "Productos" Id, Productos, Imagen. lo que quiero es que al momento de abrir un formulario este verifique la tabla y cree botones con el nombre y la imagen del producto.. La cantidad de botones depende de la cantidad de productos que halla en la tabla.... Utilizó visual estudio express 2013..,VB.net.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Crear Botones en tiempo de ejecución según bd

Publicado por Guillermo (42 intervenciones) el 07/05/2015 11:13:10
Creo que estas equivocado en el planteamiento, porque, qué piensas hacer si hay demasiados productos y no te caben en la pantalla? Para eso deberías usar lo siguiente:
1º Creas un objeto IMAGELIST en tu formulario, éste objeto actuará como almacen de imagenes. (Ten en cuenta que este tipo de objetos están, pero NO se ven durante la ejecución, solo los verás en tiempo de diseño)
2º Creas un objeto LISTVIEW, que se alimente de las fotografías del IMAGELIST.

-Lo primero que debes hacer es cargar el IMAGELIST con los resultados de tu búsqueda, y para eso te recomiendo que eches un vistazo a éste artículo:
https://msdn.microsoft.com/es-es/library/fat9bdzd(v=vs.110).aspx


-En segundo lugar debes configurar el LISTVIEW para que se alimente del IMAGELIST anterior, para eso seleccionas el objeto LISTVIEW, y en sus propiedades buscas la propiedad llamada: 'LARGEIMAGELIST', despliegas el menú, y verás que en la lista aparecerá el nombre de tu objeto LISTVIEW, lo seleccionas, también selecciónalo en la propiedad 'SMALLIMAGELIST', por si la vista que eliges es otra.
NOTA: También puedes configurar en las propiedades el tamaño de las imagenes que aparecerán, y como quieres que se visualicen (hay 5 maneras diferentes, se seleccionan en la propiedad 'View'). Aquí tienes información sobre los LISTVIEW:
https://msdn.microsoft.com/es-es/library/6dwb14tw(v=vs.110).aspx

Ten en cuenta lo siguiente: Primero carga el imagelist con las fotos, y despues crea en el listview tantos elementos como objetos de imagen tenga el imagelist, sino, no funcionará y te volverás loco. Aquí te pongo un codigo que usé yo no hace mucho, en el que se obtienen fotos con un select de una base de datos sql, después se almacenan dichas fotos en un imagelist, y tras eso se crean tantos objetos nuevos en el listview como fotos tenemos almacenadas en el imagelist. Si te vale, estupendo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim dt5 As New DataTable 'dt5 es como un array que se autoadapta segun los datos que introduzcas
dt5.Clear() 'limpiamos los datos de DT5 para almacenar la nueva busqueda
sqlquery = "Select codigofoto,fotoprod FROM fotoproducto" 'esta es la consulta
cmd = New MySqlCommand(sqlquery, DBCon) 'dbcon debe almacenar la cadena de conexion a la base de datos
Dim dp As New MySqlDataAdapter(cmd)
'Almacenamos la consulta hecha con el select en DT5
dp.Fill(dt5)
contador = dt5.Rows.Count() 'contamos los resultados obtenidos en la consulta
Dim i = 0
Dim elemento As New ListViewItem
If contador >= 1 Then
	For i = i To contador - 1
	        dim myRow = dt5.Rows(i)
	        'le decimos que es del campo fotofam y de tipo byte, y con stream lo convertimos en foto
		Dim MyData As Byte() = DirectCast(myRow("fotoprod"), Byte())
		Dim Stream = New MemoryStream(MyData)
		ImageList1.Images.Add(Image.FromStream(Stream)) 'Imagelist1 es el nombre de mi Imagelist
		'Aqui creamos elementos en el listview para que las fotos tengan donde albergarse
		elemento = New ListViewItem
		elemento.ImageIndex = i
		Cajonfotos.Items.Add(elemento) 'cajonfotos es el nombre de mi Listview
	Next
End If
Para saber qué foto ha seleccionado el usuario, lo obtienes en el evento 'mouseclick' del Listview así:
1
Cajonfotos.SelectedItems(0).Index
Eso lo almacenas en una variable y así tienes el numero de foto seleccionada.

Si aún sigues empeñado en usar controles, aquí te dejo información, eso sí, para este ejemplo debes crear en tu formulario un objeto 'Panel', que no es mas que un recuadro que alberga controles:
http://www.qualityinfosolutions.com/agregar-controles-en-tiempo-de-ejecucion-a-un-panel-en-visual-basic-net/
1saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar