Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta controles. Mostrar todas las entradas
Mostrando entradas con la etiqueta controles. Mostrar todas las entradas

martes, 12 de agosto de 2014

Uso de avanzado de contenedores: Creando un entorno de controles parecido a Thunderbird

Uso de avanzado de  contenedores: 

Creando un entorno de controles parecido a Thunderbird

Cuando uno se inicia en crear los formularios y añadirles controles, se suele "arrastrar y soltar" los controles en el formulario, colocándolos de forma manual en él. 

Esto tiene una limitación, la cual  es que cuando el formulario cambie de tamaño (se aumente o disminuye de tamaño), los controles se quedan en el mismo sitio, dejando espacios vacíos sin rellenar o en el caso contrario (disminuir las dimensiones del formulario) se queden ocultos a la vista  del usuario.

Para evitar esto, se usan los "contenedores", y sus propiedades "expand" y "arrangement"

Con la propiedad "expand" establecida con valor True, se establece que si se cambia el tamaño donde esta incluido  el contenedor (ya sea un formulario u otro contenedor), este organizará su contenido (controles (label,textbox,buttón, etc) u otros contenedores) que estuvieran dentro de él.

Con la propiedad "arrangement" ( ver gambaswiki), se establece la forma de adaptar los controles o contenedores "hijos" (los que estén en su interior). Tiene varios valores, y según estos, los elementos que estén en su interior se ordenaran:

  • Column o TopBottom: Se ordenan en columnas
  • Fill: Ampliarán sus dimensiones al área que tenga el contenedor
  • Horizontal: Se ordenan a la altura (height) que tenga el contenedor
  • Row o LeftRight: Se ordena en filas
  • None: No se ordenan los elementos.
  • Vertical: Se ordenan por el ancho (width) que tenga el contenedor.

En este post, pondré de ejemplo como usar los contenedores de controles para conseguir un entorno parecido al programa Thunderbird.


Video introductorio:




Empezamos:
 El formulario inicial, tendrá dos contenedores:  un tabstrip (tendrá las pestañas)  y un panel (zona inferior)
Para que los contenedores, ocupen todo el formulario, tiene que tener la propiedad arrangement como Vertical. Asi tomarán en ancho del formulario.

Además el TabStrip, tendrá que expandirse (.expand=true) y el panel inferior, permanecer con el mismo alto.

En el TabStrip, su propiedad arrangement será "Fill", para que los controles hijos que contengan lo ocupen completamente. Y en panel inferior, tendra el arrangement igual a Horizontal para que se ordenen horizontalmente.


Luego continuaremos definiendo otros contenedores,Vsplit, para dividir el contenido mediante barras horizontales, Hsplit para hacer divisiones en vertical. Usando la propiedad .layout que tienes estos contenedores del tipo _split, se le  asigna un array de números enteros para definir como se reparte el espacio dentro de ellos..

Por ejemplo [1,3,3],  definiria 2 subdivisiones (barras que se pueden mover), asignadole el espacio a los contenedores o controles que contendría cada subdivisión el siguiente tamaño:
  • 1, sería 1/6 del espacio disponible (16,6%)
  • 3, seria 3/6 del espacio disponible (50%)
  • 2, seria  2/6 del espacio disponible (33,4%)


La organización de los controles la haremos según esta jerarquía de controles y contenedores:

Jerarquía de Controles
Quedando el formulario así:

Formulario con los controles y contenedores añadido

A la vez iremos definiendo las distintas propiedades, quedando como sigue:



De esta manera, el formulario se comportaría de una manera similar a como lo hace el formulario principal del programa Thunderbird, cuando cambiamos de tamaño el formulario, o desplazamos las distintas barras de separación, con el consiguiente adaptación al tamaño de los controles y/o contenedores  contenidos dentro de ellos.

Os podeis descargar el ejemplo aqui:

Descargar



Saludos

sábado, 8 de octubre de 2011

Recorrer los controles de nuestro formulario

Recorrer Controles en Gambas:
Ejemplo:
 Generar una lista de checkbox activados

Este es un ejemplo de como recorrer la lista de controles que tenemos en nuestro formulario.
En este caso, lo que hago es conseguir una lista de los checkbox que estan checkeados (value=true).
El resultado, los saco en un textarea y en la consola.


' Gambas class file

' fuente:
' http://www.gambas-es.org/recorrer-varios-controles-solucionado-vf1-vt1917.html?highlight=recorrer+controles


PUBLIC seleccionados AS String
PUBLIC ar_seleccionados AS NEW String[] 'array que contendrá los check box seleccionados


PUBLIC SUB ButtonMuestra_Click()
DIM a AS Integer 'para el for next
DIM hctl AS Control
DIM hcheck AS CheckBox
seleccionados = ""
FOR EACH hctl IN ME.Children

IF hctl IS CheckBox THEN
'como es un checkBox, para poder ver sus propiedades lo asigno a una variable tipo checkbox (hcheck)
hcheck = hctl
IF hcheck.Value THEN
'aqui le añado a seleccionados el texto que contenga el hchek
seleccionados &= hcheck.text & "/"
ENDIF
ENDIF

NEXT
TextArea1.text = ""
TextArea1.text = seleccionados

'conversion en arrays
ar_seleccionados = Split(seleccionados, "/")

FOR a = 0 TO ar_seleccionados.count - 1
PRINT ar_seleccionados[a]
NEXT

END



Código del ejemplo: http://manualgambasenaleman.googlecode.com/files/daniela-0.0.1.tar.gz



Fuente:
http://www.gambas-es.org/recorrer-varios-controles-solucionado-vf1-vt1917.html?highlight=recorrer+controles

jueves, 6 de octubre de 2011

Gridviews: El evento DATA Mostrar consultas de Bases de Datos Rápidamente


Gridviews: El evento Data
Mostrar consultas de Bases de Datos
Rápidamente

Cuando rellenamos un gridviews con los resultados de una consulta de una base de datos, el proceso de escritura y muestra en pantalla de dichos datos es muy lento.
Para acelerar enormemente este proceso, se utiliza el evento DATA, el cual se encarga de "cargar" en el gridviews solo que se va a mostrar en pantalla.

Aqui teneis un código de ejemplo, para usarlo, simplemente
1) creas un proyecto en gambas2,
2) añade al formulario un gridviews
3) en Proyecto/Propiedades/Componentes activa el componente "gb.db"
4) y añades el código siguiente al formulario:


' Gambas class file
PRIVATE $hConn AS NEW Connection
PRIVATE $res AS Result
'-------------------------------------------------
PUBLIC SUB Form_Open()
DIM iCount AS Integer
DIM hTable AS Table
DIM rTest AS result
DIM sql AS String
'define the gridview layout
GridView1.header = GridView.Horizontal
GridView1.grid = TRUE
GridView1.Rows.count = 0
GridView1.Columns.count = 2
GridView1.Columns[0].text = "ID"
GridView1.Columns[1].text = "Value"
GridView1.Columns[0].width = 55
GridView1.Columns[1].width = 55
WITH $hConn
.Type = "sqlite"
.host = User.home
.name = ""
END WITH
'delete an existing test.sqlite
IF Exist(User.home & "/test.sqlite") THEN
KILL User.home & "/test.sqlite"
ENDIF
'create test.sqlite
$hConn.Open
$hConn.Databases.Add("test.sqlite")
$hconn.Close
'define the table sampleTable
$hconn.name = "test.sqlite"
$hConn.Open
hTable = $hConn.Tables.Add("sampleTable")
hTable.Fields.Add("s_seq", db.Integer)
hTable.Fields.Add("s_rndm", db.Integer)
hTable.PrimaryKey = ["s_seq"]
hTable.Update
'fill the table with generated data
$hconn.Begin
rTest = $hConn.Create("sampleTable")
FOR iCount = 1 TO 10000
rTest!s_seq = iCount
rTest!s_rndm = Int(Rnd(0, 100))
rTest.Update
NEXT
$hConn.Commit
'read the database
sql = "select s_seq as ID, s_rndm as Value from sampleTable"
$res = $hconn.Exec(sql)
CATCH
$hConn.Rollback
Message.Error(DConv(Error.Text))
END
'-------------------------------------------------
PUBLIC SUB Form_Activate()
'change the rowcount of the gridview from 0 to the number of records.
'This triggers the data handling event
GridView1.Rows.Count = $res.Count
END
'-------------------------------------------------
PUBLIC SUB GridView1_Data(Row AS Integer, Column AS Integer)
$res.moveTo(row)
GridView1.Data.text = Str($res[GridView1.Columns[column].text])
END
'-------------------------------------------------
PUBLIC SUB Form_Close()
$hconn.Close
END
'-------------------------------------------------


Este programa, mediante código, crea una base de datos tipo sqlite, le añade una tabla de 2 columnas. Y con un for next le va añadiendo 10.000 registros a la base de datos.

Con el evento DATA, cada vez que se mueve el gridview, se van redibujando los datos de la consulta

Fuentes:
http://kalaharix.wordpress.com/gambas/gridview-and-the-data-handling-event/


http://www.gambas-es.org/viewtopic.php?f=4&t=280&highlight=gridview1data

domingo, 18 de septiembre de 2011

Teclado Virtual: un nuevo componente para Gambas


Teclado Vitual en Gambas2



Este componente nos proporciona un teclado en pantalla, que se relaciona con un  textbox determinado, con el cual podemos ir introduciendo textos y números.

Ha sido realizado por Luis Jorge Martín Aznar (ljma),  y se puede descargar desde el siguiente enlace:
http://www.gambas-es.org/viewtopic.php?f=5&t=1907


Su uso es muy sencillo, y aqui os dejo un video tutorial de como instalarlo y usarlo.



Enlace de descarga: alojado en google drive

Saludos

Nota:
Solo hace falta hacer la instalación una sola vez, para que este disponible para nuestros proyectos.

miércoles, 26 de enero de 2011

Paginas de comandos de gnu/linux:

He encontrado esta pagina muy interesane que comentan un montón de comandos de linux.
http://linuxcomandos.blogspot.com/2008/04/comando-file.html

Uno muy interesante es: file, que te da información del tipo de archivo que es.


Por ejemplo: el tipico correo que te mandan y que no viene extensión, pues con file
puedes ver el tipo de archivo
$file nombre_archivo

martes, 21 de diciembre de 2010

Nuevo Control: Semáforo

Os adjunto el código fuente de un nuevo control que he creado, se llama semáforo y esta heredado de un picturebox, añadiéndole una nueva función llamada estado, para la representación de varios estados de un semáforo (verde, amarillo, rojo, completamente encendido o apagado).

Es un código muy simple, pero espero que os resulte útil.

Código Fuente (gambas2) actualizado 09/12/2012












También he creado un videotutorial explicando como lo he hecho..



Saludos

sábado, 11 de diciembre de 2010

gb.odt: 2 º version

And here the 2 nd version of this control, vastly improved with regard to the format and fonts are recognized.






Download links:Package source:
http://manualjsb.googlecode.com/files/odt-0.2.0.tar.gz

Help on the component:
http://manualjsb.googlecode.com/files/manual%20del%20uso%20del%20componenete%20gbgbt%20020.odt%20.odt

. Deb package

http://manualjsb.googlecode.com/files/gambas2-odt_0.2-1_all.deb

Program source code sample:

http://manualjsb.googlecode.com/files/pruebaodt-0.2.tar.gz

Greetings


Julio Sánchez

gb.odt: 2º versión

Ya esta aquí la 2º versión de este control, ampliamente mejorado en lo referido a los formatos y tipos de letras que se reconocen.







 Enlaces de descarga:
Paquete código fuente:
https://app.box.com/s/5kjcnmqolh3jic9s8o3z



Saludos


Julio Sánchez

domingo, 5 de diciembre de 2010

New Component: gb.odt for gambas2

New Component: gb.odt for gambas2gb.odt: Prepare reports and export to the format. odt (to use it in openoffice, for example)
The idea of this new component is able to pass. Txt files (with certain format). Odt, to help make reports quickly from our applications and openoffice writer.
Here you can see a screenshot of its use:



- Download the source code
     
2 nd place of unloading


- Download data sheet information and properties of the
     
2 nd place of unloading

- Download an example of use
     
2 nd place of unloading
 

-. Deb (for installation)
     
2 nd place of unloading
 

It's a beta, but usable. In the next entries will realize improvements on it to apply the format to use.
I request a donation by paypal to get some income and continue with the improvements.
The softwarefree, is not cheap, is freedom.
Greetings
July
Note:I put a 2nd link to download the files if the first fails.

sábado, 4 de diciembre de 2010

Nuevo Componente: gb.odt para Gambas2


gb.odt: Realizar informes y exportarlo al formato .odt (para usar lo en openoffice, por ejemplo)

La idea de este nuevo componentente es poder pasar archivos .txt (con ciertos formatos) a .odt, para facilitar realizar informes rápidamente desde nuestras aplicaciones y con openoffice writer.

Aquí podeis ver una captura de su uso:


- descarga del código fuente,
     2º lugar de descarga

- descarga de ficha técnica de propiedades e información del mismo
     2º lugar de descarga


- descarga de ejemplo de utilización
     2º lugar de descarga

- archivo .deb (para instalacion)
     2º lugar de descarga

Es una versión beta, pero utilizable. En el proximas entradas realizaré mejoras en el mismo para aplicar los formatos a usar.

Solicito alguna donación mediante paypal  para obtener algún ingreso y poder continuar con las mejoras.

El softwarefree, no es gratis, es libre.

Saludos

Julio

Nota:
He puesto un 2º enlace para la descarga de los archivos por si fallara el primero.