A veces es una de las aplicaciones mas corrientes en los ejercicios de programación.
En este ejemplo se crea una bandera, en este caso la de Andalucía. Podéis crear la que os guste.
E incluso hacer una aplicación mucho mas compleja.
- Se ha optimizado la creación de cada etiqueta para localizar cada una de ellas en una posición.
- Se ha aprovechado la propiedad Arrangement del formulario para que nos muestre los colores alineados en vertical
- Se ha añadido el método Resize del formulario para que podamos ampliar la bandera.
Posiblemente se pueda optimizar aun mas el código. Es un comienzo.
¿ Por que he usado etiquetas y no otro tipo de control ?. Ha quedado mejor con los colores y las divisiones
Este es su código fuente:
Const nlabels As Integer = 3 'Número de barras de color
Private olabel As Label 'Objeto etiqueta
Private alabel As New Label[] 'Array de objetos etiqueta
Public Sub _new()
End
Public Sub Form_Open()
Dim cuenta As Integer
Dim x As Integer
Dim y As Integer
FormBandera.Arrangement = Arrange.Vertical 'Para que se alineen verticalmente las barras de colores(etiquetas)
'Podiamos hacerlo horizontalmente si fuera por ejemplo la bandera de Francia, Italia,etc. :-)
'Vamos a querer siempre en este caso, que la etiqueta quede una debajo de la anterior
'Asi que la coordenada de x e y de la siguiente sera el maximo tamaño de alto y ancho de la anterior etiqueta
For cuenta = 0 To nlabels - 1 'El indice del array comienza siempre en 0
olabel = New Label(Me)
With olabel
Select Case cuenta
Case 0
.X = 0
.Y = 0
.Background = Color.RGB(1, 134, 34)
Case 1
.X = alabel[cuenta - 1].Width
.y = alabel[cuenta - 1].Height
.Background = Color.White
Case 2
.X = alabel[cuenta - 2].Width
.Y = alabel[cuenta - 2].Height
.Background = Color.RGB(1, 134, 34)
End Select
'Común
.Border = Border.Plain
.Width = Me.W / nlabels
.Height = Me.H / nlabels
End With
alabel.Add(olabel)
Nexthttp://www.linuxmint.com/start/nadia/
End
Public Sub Form_Resize()
Dim unlabel As Label
'Usamos el evento Resize para cambiar el tamaño de la bandera dentro de nuestro formulario
'Cambiamos el ancho y alto de cada etiqueta.
For Each unlabel In alabel
With unlabel
.Width = Me.W / nlabels
.Height = Me.H / nlabelshttp://www.linuxmint.com/start/nadia/
End With
Next
End
Private olabel As Label 'Objeto etiqueta
Private alabel As New Label[] 'Array de objetos etiqueta
Public Sub _new()
End
Public Sub Form_Open()
Dim cuenta As Integer
Dim x As Integer
Dim y As Integer
FormBandera.Arrangement = Arrange.Vertical 'Para que se alineen verticalmente las barras de colores(etiquetas)
'Podiamos hacerlo horizontalmente si fuera por ejemplo la bandera de Francia, Italia,etc. :-)
'Vamos a querer siempre en este caso, que la etiqueta quede una debajo de la anterior
'Asi que la coordenada de x e y de la siguiente sera el maximo tamaño de alto y ancho de la anterior etiqueta
For cuenta = 0 To nlabels - 1 'El indice del array comienza siempre en 0
olabel = New Label(Me)
With olabel
Select Case cuenta
Case 0
.X = 0
.Y = 0
.Background = Color.RGB(1, 134, 34)
Case 1
.X = alabel[cuenta - 1].Width
.y = alabel[cuenta - 1].Height
.Background = Color.White
Case 2
.X = alabel[cuenta - 2].Width
.Y = alabel[cuenta - 2].Height
.Background = Color.RGB(1, 134, 34)
End Select
'Común
.Border = Border.Plain
.Width = Me.W / nlabels
.Height = Me.H / nlabels
End With
alabel.Add(olabel)
Nexthttp://www.linuxmint.com/start/nadia/
End
Public Sub Form_Resize()
Dim unlabel As Label
'Usamos el evento Resize para cambiar el tamaño de la bandera dentro de nuestro formulario
'Cambiamos el ancho y alto de cada etiqueta.
For Each unlabel In alabel
With unlabel
.Width = Me.W / nlabels
.Height = Me.H / nlabelshttp://www.linuxmint.com/start/nadia/
End With
Next
End
Y aquí para que podáis descargarlo.
Ah, ahora que lo veo, mejor en el código usar Me.Arrangement, y no usar el nombre del formulario.Sabemos a cual estamos haciendo referencia.
Parece que el array puede no ser necesario, si partimos de una x e y inicial. Es una aplicación sencilla, se complica mas cuando creas los objetos
desde código, si no es por el bucle, se hubiera creado mas código sobrante. Hay que aprovechar las propiedades de alineación y la verdad es que
no es sencillo al principio, cuando te dispones a distribuir los componentes de una manera en el formulario.
Llegar a comprender y usar correctamente los contenedores de alineación puede llevar un buen tiempo.
Saludos
Banderas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Banderas.tar.gz | |
Tamaño: | 5.99 KB | |
Descargado: | 21 veces |
Banderas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Banderas.tar.gz | |
Tamaño: | 5.99 KB | |
Descargado: | 21 veces |
Banderas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Banderas.tar.gz | |
Tamaño: | 5.99 KB | |
Descargado: | 21 veces |