domingo, 23 de noviembre de 2014

Escritura directa en un archivo

Buenas, puede suceder que necesitemos un archivo donde guardemos datos para el funcionamiento de nuestro programa sin la intervención del usuario. Aquí les dejo un ejemplo super simple como me gusta a mi para que sea mas fácil comprender.

' gambas class file

' by postapase
' Escritura directa en un archivo

Public Sub Form_Open()
Dim Ruta As String = User.Home & "/prueba.txt" 'Variable de tipo cadena,
' que contiene la ruta donde se guardara/creara el archivo con los datos

Dim Archivo As File 'declaracion de variable de tipo archivo

Me.Center 'Centra el formulario

Archivo = Open Ruta For Create 'Abre archivo, sino existe lo crea

Print #Archivo, "Hola, hoy es el día " & Format(Date, gb.LongDate) 'escribe 1ª linea
Print #Archivo 'deja la linea en blanco, escribe 2ª linea
Print #Archivo, "El archivo se guardo en:" ' escribe 3ª linea
Print #Archivo, Ruta 'escribe 4ª linea

Close #Archivo 'cierra el archivo

End

' Ahora busquen el archivo en User.Home &"/prueba.txt" para ver los resultados



sábado, 22 de noviembre de 2014

Guardar/Cargar configuraciones en un txt




El Tanteador de tenis de mesa tiene una ventana donde se puede configurar los distintos colores del la interfaz clásica, y también se puede guardar y cargar configuraciones, pero... no esta bien programado ni es cómodo para el usuario.
Por ese motivo me puse a buscar un método mas conveniente para crear archivos de configuraciones de colores que se les puede poner el nombre de la persona que eligió esos colores con lo cual es fácil de identificar cuales son los colores que cada persona eligió, con una extencion a nuestro gusto en este caso yo le asigne la extencion .ConfigColor pero puede ser cualquiera a su elección

 Así se ve el archivo de configuración de colores con dos valores: Letra y Fondo,
pero puede tener cientos de valores según la necesidad de nuestro programa.





' gambas class file

' by postapase
Public JuegoColores As String
Public Fondo As String
Public Letra As String

Public Sub Form_Open()
Me.Center
Me.Caption = "Configuracion de colores"
End

Public Sub btnGuardar_Click()
Dim sPath As String

If Dialog.SaveFile() Then Return
sPath = Dialog.Path
File.Save(sPath & ".ConfigColor", JuegoColores)

End

Public Sub ColorButton1_Change()
Actualizar
End

Public Sub ColorButton2_Change()
Actualizar
End

Public Sub Actualizar()
Letra = "Letra=" & ColorButton1.Value
Fondo = "Fondo=" & ColorButton2.Value
LabPostapase.Foreground = ColorButton1.Value
LabPostapase.Background = ColorButton2.Value
JuegoColores = Letra & gb.NewLine
JuegoColores &= Fondo
End

Public Sub btnCargar_Click()
Dim sPath As String
Dim dato As String
Dim ArchivoX As File
Dim LineaX As String
Dim DatoX As String[]

Dialog.Filter = ["*.ConfigColor", ("Configuración de colores")]

If Dialog.OpenFile() Then Return
sPath = Dialog.Path

ArchivoX = Open sPath For Read

While Not Eof(ArchivoX)

Line Input #ArchivoX, LineaX

If InStr(LineaX, "Letra") <> 0 Then
DatoX = Split(LineaX, "=")
ColorButton1.Value = Val(Trim(DatoX[1]))
Continue
Endif

If InStr(LineaX, "Fondo") <> 0 Then
DatoX = Split(LineaX, "=")
ColorButton2.Value = Val(Trim(DatoX[1]))
Continue
Endif

Wend

Close ArchivoX
Actualizar()

End

Public Sub btnPredeterminados_Click()
ColorButton1.Value = &H000000
ColorButton2.Value = &HFFFFFF
Actualizar()
End



Código fuente:  ConfigColor-0.0.1.tar.gz

lunes, 17 de noviembre de 2014

Mi primer componente llamado animales

Buenas aquí ando re feliz pues e logrado crear mi primer componente y lo comparto con ustedes novatos igual que yo.
Hice un planteo en el foro http://www.gambas-es.org/  en este post .
Obtuve dos respuestas una muy interesante sin llegar a ser lo que pedi exactamente y la otra me mandaron a estudiar :( .
Pero... soy curioso y cuando ando con ganas y paciencia lo que busco generalmente lo encuentro pues bien hoy fue uno de esos días.

Primero que nada creamos un nuevo proyecto tildando en Programar un componente, elegimos en tipo de proyecto Aplicación gráfica GTK+, elegimos donde guardaremos el proyecto y que nombre tendra, en mi caso le puse animales.



Segundo borramos las dos clases que el gambas crea de forma predeterminadas llamadas CControl y CContainer ubicadas en la carpeta fuente.
También borramos las dos imágenes png de la carpeta Control ubicada en la carpeta proyectos. en la carpeta control agregamos una imagen a gusto y la renombramos con el nombre de la clase que crearemos en mi caso es animales

Tercero creamos una nueva clase llamada animales (en mi caso) en la carpeta fuentes.

Ahora les dejo las siguientes imagenes y ustedes sabran que hacer osea copiar el codigo en la clase y en el formulario FTest







Bien después de probado el componente en el formulario FTest y todo funciona como queremos, tenemos que crear el archivo de instalación para compartir nuestro componente con el resto del mundo algo que da mucha gratificación jaja y eso que este componente solo sirve para dar nociones de como crear un componente pues  en si no hace nada interesante.

Vamos a Proyecto-->Crear-->Paquete de instalación




y seguimos los siguientes pasos, terminado el proceso se crearan los paquetes dentro de una carpeta y vamos a instalar el paquete deb en mi caso seria postapase-animales_0.0.1-0ubuntu1_all.deb

Después de instalado creamos un nuevo proyecto, luego vamos a Proyecto-->Propiedades-->Componentes y tildamos en animales que es nuestro componente recién creado.






En esta ultima imagen podemos apreciar el componente animales en accion y funcionando perfectamente.

Espero que les sirva para sus estudios y pruebas novatos de gambas jajaja.

Saludos.

Código fuente del componente animales: Animales-0.0.1.tar.gz

domingo, 16 de noviembre de 2014

Ejemplos de sintaxis en Gambas3 (truco by postapase)

Buenas gente,

Resulta que estudiando siempre aprendemos algun comando nuevo, entendemos como funciona pero he aquí que no encontramos muchos ejemplos de sintaxis, pero... para eso teneis un buen amigo como postapase jaja.

Yo estoy en un proceso de aprendizaje por golpes :( jaja y muchas veces no se la sintaxis de un comando y los ejemplos que encuentro en internet o son escasos o poco entendibles de ahí la necesidad de ver muchos, muchos ejemplos para comprender fácilmente.

Sin mas preambulos les cuento en que consiste el truco:

1. Leer y entender bien este post: juguemos a ser Benoit Minisini

2. Abrimos el proyecto gambas3

3. Vamos a Herramientas-->Encontrar y escribimos en Buscar el comando que deseamos, en este caso yo puse a modo de ejemplo el comando Format

4.Tildamos en Sólo palabras y también en Todos los archivos y clic en el botón Navegar

y gualaaa!!! vemos cientos de ejemplos, bueno saludos y espero les sirva.

Tambien pueden comentar en el blog que les parecio el tutorial jaja.

Saludos.





Format

Aprendiendo un poco sobre el comando Format y las Constantes predefinidas.




' gambas class file

'by postapase

Public Sub Form_Open()
Me.Center 'centra el formulario
DateBox1.Value = Date 'se coloca la fecha del sistema del dia actual
'a la caja de texto del DateBox1

TextArea1.Text &= Format(DateBox1.Value, gb.LongDate) & gb.NewLine
End

Public Sub Button1_Click()
TextArea1.Clear ' borra todo el TextArea1
ComboBox1.Text = "" ' borra el cuadro de texto del ComboBox1
ComboBox1.SetFocus 'da el foco al ComboBox1 y queda el cursor parpadeando
End

Public Sub RadioButton1_Click()
'& concatena cadenas o string, equivalente a:
' TextArea1.Text = TextArea1.Text & Format(DateBox1.Value, gb.LongDate) & gb.NewLine
'gb.newline equivalente a salto de linea o "\n"
'gb.longdate equivalente a (dddd d mmmm yyy)-(domingo 16 noviembre 2014)
'format como lo dice el nombre del propio comando, da formato en este caso a la fecha
'tomando la fecha de DateBox1.value y dandole el formato elegido en este caso
'con la Constante predefinida de gb.LongDate, se puede optar por otras constantes
'como gb.MediumDate, gb.ShortDate o bien 'definirlo de forma personalizada
' por ejemplo con: "dddd, mmm yyyy" en vez de gb.LongDate
TextArea1.Text &= Format(DateBox1.Value, gb.LongDate) & gb.NewLine

End

Public Sub RadioButton2_Click()
TextArea1.Text &= Format(DateBox1.Value, gb.MediumDate) & gb.NewLine
End

Public Sub RadioButton3_Click()
TextArea1.Text &= Format(DateBox1.Value, gb.ShortDate) & gb.NewLine
End

Public Sub Button2_Click()
TextArea1.Text &= Format(DateBox1.Value, ComboBox1.Text) & gb.NewLine
ComboBox1.Add(ComboBox1.Text)
End

Public Sub Button3_Click()
ComboBox1.Clear
ComboBox1.Text = ""
ComboBox1.SetFocus
End

Código fuente: Fecha-0.0.1.tar.gz

lunes, 27 de octubre de 2014

Sgn



' gambas class file

' by postapase

Public Sub Button1_Click()
Dim num As Integer

Randomize

num = Rnd(-1000, 1000) 'Rnd elige un numero aleatorio entre -1000 y 1000
'y lo guarda en la variable de tipo integer num

If Sgn(num) = 1 Then 'Sgn analiza el dato integer o numerico dentro de num
'y devuele 1 si el número es positivo o si es negativo devuelve -1
TextArea1.Text &= "El número " & num & " es un número positivo ( " & Sgn(num) & " )" & gb.NewLine
Else
TextArea1.Text &= "El número " & num & " es un número negativo ( " & Sgn(num) & " )" & gb.NewLine
Endif

End
 

domingo, 19 de octubre de 2014

Solución a reto Solveet (MayorSinDigito)



Se tiene un número X y se indica un dígito Y. Devolver un número Z que sea menor a X y que no posea el dígito Y.
La función/método puede aceptar dos argumentos: el número X y el dígito Y. No es necesario agregar ninguna validación para Y.
Ejemplos:
mayorSinDigito(123, 2) => 119
mayorSinDigito(113, 2) => 111
mayorSinDigito(113, 1) => 99


' gambas class file

' by postapase

Public Sub Form_Open()
Dim Num As Integer

Repeat
cbxDigitos.Add(Num)
Inc Num
Until Num > 9
cbxDigitos.Index = 0

End

Public Sub btnBuscar_Click()
MayorSinDigito(txtMayor.Text, cbxDigitos.Text)
End

Public Sub MayorSinDigito(Mayor As String, Digito As Integer)
Dim a, Resta1 As Integer

Resta1 = Mayor - 1

For a = Resta1 To 1 Step -1
If InStr(CString(a), CString(Digito)) = 0 Then
LabResultado.Text = "Número mayor es:" & a & " , sin digito " & Digito
Break
Endif
Next

End