Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Bandera
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Bandera 
 
Hola!.

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

 bandera

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
 


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

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Lunes, 10 Junio 2013, 12:05; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Bandera 
 
Una modificación posible.

Public Sub Form_Open()

  Dim cuenta As Integer
  Dim x As Integer
  Dim y As Integer
  
  Me.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 += olabel.Width
          .y += olabel.Height
          .Background = Color.White
        Case 2
          .X += olabel.Width
          .Y += olabel.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)
  Next
  
End
 


El array es necesario por que tenemos que cambiar el tamaño a cada etiqueta cuando usamos el metodo Resize.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Scápoli (Italia, Región Molíse): El Alc... vuott Off-topic 3 Lunes, 13 Abril 2020, 18:09 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron