Allanando el camino a los iniciados en Gambas, porque programar en Gambas es un placer!!
domingo, 5 de abril de 2020
Gambas WebForm (Libro)
Esta obra es un camino corto y directo para aprender a desarrollar aplicaciones Web de alta calidad. El componente WebForm de Gambas 3 permite la creación de casi cualquier interfaz grafica con la calidad de un software de escritorio y se potencia aun más con el uso del Gambas 3 como lenguaje de BackEnd y FontEnd. En este libro te llevamos de cero a cien explicando los fundamentos de lenguaje Gambas 3 y desmenuzando paso a paso el IDE RAD de Gambas 3 enfocado al desarrollo Web. Es importante mencionar que para desarrollar una aplicación Web con acceso a base de datos, validación de formularios, GridView entre otros, se necesita de al menos tres lenguajes de programación, por ejemplo JavaScript, PHP, HTML, CSS, Ajax (este ultimo es un acrónimo). La propuesta de Gambas WebForm es utilizar este solo lenguaje para obtener los mismos resultados empleando menos tiempo, y este libro de dirá como hacerlo. Adicionalmente Gambas WebForm se plantea como una alternativa para desarrollar aplicaciones Web para dispositivos móviles. El entorno de desarrollo de aplicaciones rápido RAD de Gambas 3 supera en gran media otros entornos de desarrollo móvil que requieren del uso de lenguaje XML para desarrollar la interfaz móvil y otro lenguaje de programación para conectar los controles de la interfaz. Gambas simplifica todo este proceso maximizando tu productividad y beneficios. (comentario de
Comprar libro
Canal en youtube:
https://www.youtube.com/channel/UCEdI19J6sWOfZe_cdEE7U7g/videos
Etiquetas:
Componentes,
Libros o cursos,
WebForm
miércoles, 18 de marzo de 2020
Convertir números a números romanos
Convierte números a números romanos y viceversa!!.
' gambas module file
'by postapase
Public Sub Main()
Dim a As Integer
For a = 1 To 4000
Print a & "=" & gb.Tab & EnteroToRomano(a)
Next
End
Public Sub EnteroToRomano(entero As Integer) As String
Select Case entero
Case 1
Return "I"
Case 2
Return "II"
Case 3
Return "III"
Case 4
Return "IV"
Case 5
Return "V"
Case 6
Return "VI"
Case 7
Return "VII"
Case 8
Return "VIII"
Case 9
Return "IX"
Case 10
Return "X"
Case 11 To 19
Return "X" & EnteroToRomano(entero - 10)
Case 20
Return "XX"
Case 21 To 29
Return "XX" & EnteroToRomano(entero - 20)
Case 30
Return "XXX"
Case 31 To 39
Return "XXX" & EnteroToRomano(entero - 30)
Case 40
Return "XL"
Case 41 To 49
Return "XL" & EnteroToRomano(entero - 40)
Case 50
Return "L"
Case 51 To 59
Return "L" & EnteroToRomano(entero - 50)
Case 60
Return "LX"
Case 61 To 69
Return "LX" & EnteroToRomano(entero - 60)
Case 70
Return "LXX"
Case 71 To 79
Return "LXX" & EnteroToRomano(entero - 70)
Case 80
Return "LXXX"
Case 81 To 89
Return "LXXX" & EnteroToRomano(entero - 80)
Case 90
Return "XC"
Case 91 To 99
Return "XC" & EnteroToRomano(entero - 90)
Case 100
Return "C"
Case 101 To 199
Return "C" & EnteroToRomano(entero - 100)
Case 200
Return "CC"
Case 201 To 299
Return "CC" & EnteroToRomano(entero - 200)
Case 300
Return "CCC"
Case 301 To 399
Return "CCC" & EnteroToRomano(entero - 300)
Case 400
Return "CD"
Case 401 To 499
Return "CD" & EnteroToRomano(entero - 400)
Case 500
Return "D"
Case 501 To 599
Return "D" & EnteroToRomano(entero - 500)
Case 600
Return "DC"
Case 601 To 699
Return "DC" & EnteroToRomano(entero - 600)
Case 700
Return "DCC"
Case 701 To 799
Return "DCC" & EnteroToRomano(entero - 700)
Case 800
Return "DCCC"
Case 801 To 899
Return "DCCC" & EnteroToRomano(entero - 800)
Case 900
Return "CM"
Case 901 To 999
Return "CM" & EnteroToRomano(entero - 900)
Case 1000
Return "M"
Case 1001 To 1999
Return "M" & EnteroToRomano(entero - 1000)
Case 2000
Return "MM"
Case 2001 To 2999
Return "MM" & EnteroToRomano(entero - 2000)
Case 3000
Return "MMM"
Case 3001 To 3999
Return "MMM" & EnteroToRomano(entero - 3000)
Default
Return entero & " no supe convertirlo"
End Select
End
'by postapase
Public Sub Main()
Dim a As Integer
For a = 1 To 4000
Print a & "=" & gb.Tab & EnteroToRomano(a)
Next
End
Public Sub EnteroToRomano(entero As Integer) As String
Select Case entero
Case 1
Return "I"
Case 2
Return "II"
Case 3
Return "III"
Case 4
Return "IV"
Case 5
Return "V"
Case 6
Return "VI"
Case 7
Return "VII"
Case 8
Return "VIII"
Case 9
Return "IX"
Case 10
Return "X"
Case 11 To 19
Return "X" & EnteroToRomano(entero - 10)
Case 20
Return "XX"
Case 21 To 29
Return "XX" & EnteroToRomano(entero - 20)
Case 30
Return "XXX"
Case 31 To 39
Return "XXX" & EnteroToRomano(entero - 30)
Case 40
Return "XL"
Case 41 To 49
Return "XL" & EnteroToRomano(entero - 40)
Case 50
Return "L"
Case 51 To 59
Return "L" & EnteroToRomano(entero - 50)
Case 60
Return "LX"
Case 61 To 69
Return "LX" & EnteroToRomano(entero - 60)
Case 70
Return "LXX"
Case 71 To 79
Return "LXX" & EnteroToRomano(entero - 70)
Case 80
Return "LXXX"
Case 81 To 89
Return "LXXX" & EnteroToRomano(entero - 80)
Case 90
Return "XC"
Case 91 To 99
Return "XC" & EnteroToRomano(entero - 90)
Case 100
Return "C"
Case 101 To 199
Return "C" & EnteroToRomano(entero - 100)
Case 200
Return "CC"
Case 201 To 299
Return "CC" & EnteroToRomano(entero - 200)
Case 300
Return "CCC"
Case 301 To 399
Return "CCC" & EnteroToRomano(entero - 300)
Case 400
Return "CD"
Case 401 To 499
Return "CD" & EnteroToRomano(entero - 400)
Case 500
Return "D"
Case 501 To 599
Return "D" & EnteroToRomano(entero - 500)
Case 600
Return "DC"
Case 601 To 699
Return "DC" & EnteroToRomano(entero - 600)
Case 700
Return "DCC"
Case 701 To 799
Return "DCC" & EnteroToRomano(entero - 700)
Case 800
Return "DCCC"
Case 801 To 899
Return "DCCC" & EnteroToRomano(entero - 800)
Case 900
Return "CM"
Case 901 To 999
Return "CM" & EnteroToRomano(entero - 900)
Case 1000
Return "M"
Case 1001 To 1999
Return "M" & EnteroToRomano(entero - 1000)
Case 2000
Return "MM"
Case 2001 To 2999
Return "MM" & EnteroToRomano(entero - 2000)
Case 3000
Return "MMM"
Case 3001 To 3999
Return "MMM" & EnteroToRomano(entero - 3000)
Default
Return entero & " no supe convertirlo"
End Select
End
https://gambas.one/gambasfarm/?id=775&action=search
Obviamente también está en la granja de Gambas.
Etiquetas:
For...Next,
Recursividad,
Select Case
martes, 3 de marzo de 2020
jueves, 20 de febrero de 2020
La clase MaxZ
En el programa VisorRV1960 de forma muy repetitiva estoy usando botones que lo que hacen es maximizar el formulario y minimizarlo, pues bien era hora de crear una clase pues esa es la esencia de una clase que cuando hay un tarea repetitiva en vez de repetir el código se usa una clase.
El código esta en la granja de gambas, después amplio el post, saludos
codigo de clase:
' Gambas class file
'gb.settings debe estar incluida en el proyecto
Export
Inherits UserControl
Public Const _Properties As String = "*,Borde=true,Ayuda,Pintura,IconoMax,IconoMin"
Public Const _IsControl As Boolean = True
Public Const _DefaultEvent As String = "Clic"
Public Const _DefaultSize As String = "4,4"
Public Const _Group As String = "Form"
Static Public MaxZs As New MaxZ[]
Event Clic
Property Read Maximizar As Boolean
Property Borde As Boolean
Property Ayuda As String
Property IconoMax As Picture
Property IconoMin As Picture
Property Pintura As Picture
Private $FMaxZ As FMaxZ
Private $Amo As Form
Private $Borde As Boolean
Private $Ayuda As String
Private $IconoMax As Picture
Private $IconoMin As Picture
Private $Pintura As Picture
Private $Maximizado As Boolean
Public Sub _new()
$FMaxZ = New FMaxZ(Me) As "evMaxz"
Me.Proxy = $FMaxZ
ObtenerForm(Me.Parent)
MaxZs.Add(Me)
End
Private Sub ObtenerForm(padre As Object)
If padre.parent Then
If Object.Is(padre.parent, "Form") Then
$Amo = padre.parent
Else
ObtenerForm(padre.parent)
Endif
Else
'Sino tiene parent quiere decir que es un formulario
If Object.Is(padre, "Form") Then
$Amo = padre
Endif
Endif
End
Public Sub _Click()
Raise Clic
If IsNull($amo) Then Return
$Amo.Maximized = Not $Amo.Maximized
$Maximizado = $Amo.Maximized
ActualizarIcono
Settings[Me.Name & "/" & Me.Name & "_Maximizar"] = $Amo.Maximized
Settings.Save
End
Public Sub ActualizarIcono()
' If $amo.Maximized Then
If $Maximizado Then
$FMaxZ.btnIcono.Picture = $IconoMin
Else
$FMaxZ.btnIcono.Picture = $IconoMax
Endif
End
Public Sub Borrar()
Settings.Clear(Me.Name)
Settings.Save
End
Static Public Sub BorrarTodos() ''
Dim MaxZx As MaxZ
For Each MaxZx In MaxZs
Settings.Clear(MaxZx.Name)
Next
Settings.Save
End
Private Function Borde_Read() As Boolean
Return $Borde
End
Private Sub Borde_Write(Value As Boolean)
$Borde = Value
$FMaxZ.btnIcono.Border = Value
End
Private Function Maximizar_Read() As Boolean
$Maximizado = Settings[Me.Name & "/" & Me.Name & "_Maximizar", False]
ActualizarIcono
Return Settings[Me.Name & "/" & Me.Name & "_Maximizar", False]
End
Private Function Ayuda_Read() As String
Return $Ayuda
End
Private Sub Ayuda_Write(Value As String)
$Ayuda = Value
$FMaxZ.btnIcono.Tooltip = Value
End
Private Function IconoMax_Read() As Picture
Return $IconoMax
End
Private Sub IconoMax_Write(Value As Picture)
$IconoMax = Value
End
Private Function IconoMin_Read() As Picture
Return $IconoMin
End
Private Sub IconoMin_Write(Value As Picture)
$IconoMin = Value
End
Private Function Pintura_Read() As Picture
Return $Pintura
End
Private Sub Pintura_Write(Value As Picture)
$Pintura = Value
$FMaxZ.btnIcono.Picture = Value
End
Codigo de formulario:
Public Sub Form_Open()
Me.Maximized = MaxZ1.Maximizar
End
Suscribirse a:
Entradas (Atom)





