sábado, 30 de abril de 2016

While... Wend (Bucle-Repetición)





' gambas module file

' by postapase
' Da comienzo a un bucle delimitado por las instrucciones While ...WEND.
' El bucle se repite mientras la Expresión sea cierta.
' Si la expresión es falsa al inicio, el bucle nunca se ejecuta.

Public Sub Main()
Dim EntroEnBucle As Boolean ' el valor predeterminado de una variable de tipo boolean es false
Dim x As Integer

x = 1

While x <= 7 'si x es menor o igual a 7 entonces lea la siguiente linea sino lea a partir de la siguiente linea de Wend
Print "x ahora es: "; x
If EntroEnBucle = False Then EntroEnBucle = True
Inc x
Wend 'lea a partir del while

If EntroEnBucle = True
Print "Se entro en el bucle porque la condicion de entrada fue True/verdadera"
Else
Print "No se entro en el bucle porque la condicion de entrada fue false/falsa"
Endif

End

lunes, 25 de abril de 2016

REPEAT ... UNTIL





' gambas module file
'by postapase

Public Sub Main()
Dim x As Byte ' declaración de variable pequeña

Repeat
Inc x 'incrementa x en 1
Print "x equivale a " & x 'muestra en pantalla
Wait 1 ' pequeña pausa para poder observar el proceso
Until x = 10 'REPEAT ... UNTIL Bucle con una comprobación de salida al final.


Evento Arrangement y Función Min





' gambas class file

Public Ancho As Integer
Public Alto As Integer

Public Sub DrawingArea1_Arrange()

Ancho = DrawingArea1.Width
Alto = DrawingArea1.Height
Print "Ancho=" & Ancho
Print "Alto=" & Alto

DrawingArea1_Draw()

End

Public Sub Form_Open()



End

Public Sub DrawingArea1_Draw()

dibuja()

End

Public Sub dibuja()
DrawingArea1.Clear

Paint.Begin(DrawingArea1)
Paint.LineWidth = 2
Paint.Brush = Paint.Color(Color.Black)
Paint.Arc(Ancho / 2, Alto / 2, Min(Ancho / 2, Alto / 2))
Paint.Stroke
Paint.End
End


Ejemplo Triángulo


DrawingArea.Cache=true

Public Sub Form_Open()
Dim puntos As Float[] = [0, 0, -200, 200, 200, 200]

Paint.Begin(DrawingArea1) ' Comenzar los parámetros del dibujo y
'donde se quiere dibujar entre paréntesis

Paint.Translate(DrawingArea1.Width / 2, DrawingArea1.Height / 2) 'punto central del drawingArea1
Paint.LineWidth = 2 'grosor del trazo
Paint.Brush = Paint.Color(Color.Blue) 'color del trazo
Paint.Polygon(puntos) 'polígono en este caso un triángulo
Paint.Stroke ' realizar el trazado y visualizar el dibujo
Paint.End 'fin de parámetros del dibujo

End


Código Fuente

miércoles, 20 de abril de 2016

Clase personalizada (primera parte)


Primera parte de ejemplo de como hacer nuestros propios botones personalizados, que se crean con clases especiales o personalizadas o creadas por nosotros mismo.



Clase contacto


' gambas class file

'by postapase
'primera parte de clase personalizada

Property Nombre As String
Property Movil As String

Private $Nombre As String
Private $Movil As String



Private $CajaPrincipal As Panel
Private $CajaNombre As Label
Private $CajaMovil As Label
Private $Contenedor As ScrollView
Private $observador As Observer



Public Sub _new(nombre As String, movil As String, contenedor As ScrollView)

$Nombre = nombre
$Movil = movil
$Contenedor = contenedor


$CajaPrincipal = New Panel($Contenedor) As "CajaPrincipal"
$CajaPrincipal.Height = 70
$CajaPrincipal.Background = Color.DarkCyan
$CajaPrincipal.Visible = True
$CajaPrincipal.Arrangement = Arrange.Vertical
$CajaPrincipal.Padding = 2
$CajaPrincipal.Border = Border.Solid


$CajaNombre = New Label($CajaPrincipal)
$CajaNombre.Height = 55
$CajaNombre.Visible = True
$CajaNombre.Font.Bold = True
$CajaNombre.Font.Size = 20
$CajaNombre.Alignment = Align.TopLeft
$CajaNombre.Text = $Nombre
$CajaNombre.Expand = True
$CajaNombre.Proxy = $CajaPrincipal

$CajaMovil = New Label($CajaPrincipal)
$CajaMovil.Height = $Contenedor.Height - $CajaPrincipal.Height
$CajaMovil.Visible = True
$CajaMovil.Alignment = Align.Right
$CajaMovil.Text = $Movil
$CajaMovil.Font.Size = 14
$CajaMovil.Font.Italic = True
$CajaMovil.Expand = True
$CajaMovil.Background = Color.Gray


End


Public Sub CajaPrincipal_Enter()
$CajaPrincipal.Background = Color.Cyan
End

Public Sub CajaPrincipal_Leave()
$CajaPrincipal.Background = Color.DarkCyan
End

Private Function Nombre_Read() As String
Return $Nombre
End

Private Sub Nombre_Write(Value As String)
$Nombre = Value
End

Private Function Movil_Read() As String
Return $Movil
End

Private Sub Movil_Write(Value As String)
$Movil = Value
End



Formulario.

Public Sub Button1_Click()
Dim XContacto As Contacto

If txtContacto.Text = Null Then
Return
Else If txtTelefono.Text = Null Then
Return
Endif

XContacto = New Contacto(txtContacto.Text, txtTelefono.Text, ScrollView1)

txtContacto.Clear()
txtTelefono.Clear()
txtContacto.SetFocus()

End



Código fuente

domingo, 10 de abril de 2016

Param

Aquí les dejo un ejemplo de como usar Param, dado que las funciones Max y Min solo permiten dos parámetros e creado este ejemplo que permite muchos parámetros.

' gambas module file

'by postapase abril 2016

Public Sub Main()

Print op.Maximo(30, 10, 5, 2, 2000, 500)'aquí podes poner mas números, desconozco el limite.
Print op.Minimo(30, 10, 5, 2, 2000, 500)

End

---------------------------------------------------

' gambas module file

'by postapase abril 2016

Private Lista As New Integer[]
Private a As Integer

Public Sub Maximo(...) As Integer

For Each a In Param
Lista.Add(a)
Next

Return Lista.Sort(True)[0]

End


Public Sub Minimo(...) As Integer

For Each a In Param
Lista.Add(a)
Next

Return Lista.Sort(True)[Lista.Max]

End



Código Fuente

domingo, 3 de abril de 2016

Arreglos Gráficos

Este tema me costo mucho entenderlo, después de casi un año de estar aprendiendo a programar aprendí como hacer y aun me faltan comprender algunas cosas y conocer bien los componentes y sus alineaciones y arreglos.

No se si sabrán ustedes pero he aprendido a programar de forma autodidacta lo cual es mas difícil y lento que si tuviéramos un maestro en vivo.

Lo que descubrí y por esa razón aprendí a crear interfaces que al maximizar o minimizar mantuvieran las proporciones de todos los elementos como botones, textbox, y demás clases... fue manejando los contenedores con arreglos horizontales o verticales.

Las propiedades que están en juego para poder lograrlo son:

Arrangament (arreglo, disposición)

Expand

Ignore  (menos usado pero también tiene su papel en los arreglos)


Les dejo mi primer ejemplo sencillo que subí a youtube.



Ejemplo 2 ( complicando un poco)


Ejemplo 3


Ejemplo 4 (alineaciones: Derecha, Izquierda y Centrado)


Ejemplo 5 (propiedad ignore)