Los Niños de la Sierra se estan muriendo de Frio, basta de Indiferencia

Despues dicen que porque tengo las ideas politicas que tengo, porque pienso lo que pienso, porque siempre digo que esto del crecimiento de la economia y nuestro tan sonado milagro economico son solo mentiras, cuando ocurren cosas como estas es cuando uno realmente se da cuenta de la verdad del pais donde vive, del mundo donde vivimos, de la exclusion de la pobreza, del racismo cosas que pasan a diario en nuestro pais, pero lo que mas duele es la indiferencia de de muchos de nosotros simplemente porque nos han enseñado a vivir en nuestra estupida burbuja donde todo es bonito y donde supuestamente tenemos libertad y democracia, que ridiculos que somos a veces y que crueles tambien.
Cosas como estas no debemos permitir señores basta ya acaso no hemos aprendido nada de nuestro pasado sangriento, quieren acaso que esto se vuelva a repetir, si seguimos asi, lamentablemente caminamos nuevamente a esa espiral de violencia que ya nos atormento en el pasado, seamos concientes busquemos la igualdad, la justicia, el respeto a los derechos de los demas.
Dejo esta imagen que vale mas de lo que yo puedo escribir y que expresa la rabia y la impotencia que en este momento siento.

Piensa en esos niños cuando te vayas a acostar y te abrigues y te sientas bien calientito y protegido en tu casa.
Piensa en ellos por favor.

“Hasta la victoria siempre”

Anuncios

TableView con Imagenes

En esta oportunidad voy a agregar un formulario mas al proyecto anterior donde mostrare una tabla con imagenes:

Al momento de ejecutar la aplicacion tendremos algo como esto:

El codigo para lograr esto es el siguiente:

PRIVATE checked AS Picture
PRIVATE unchecked AS Picture

PUBLIC SUB Form_Open()

	DIM j AS Integer
	DIM k AS Integer
	TableView1.Columns.Count = 3
	TableView1.Columns[0].Text = "Mes"
	TableView1.Columns[0].Width = 100
	TableView1.Columns[1].Text = "Compra"
	TableView1.Columns[1].Width = 70
	TableView1.Columns[2].Text = "Venta"
	TableView1.Columns[2].Width = 70
	TableView1.Rows.Count = 12
	'Cargamos las imagenes en los objetos Picture
	checked = picture["tick.png"]
	unchecked = picture["notick.png"]
	'Establecemos en la columna 0 los meses del año
	TableView1[0, 0].text = "Enero"
	TableView1[1, 0].text = "Febrero"
	TableView1[2, 0].text = "Marzo"
	TableView1[3, 0].text = "Abril"
	TableView1[4, 0].text = "Mayo"
	TableView1[5, 0].text = "Junio"
	TableView1[6, 0].text = "Julio"
	TableView1[7, 0].text = "Agosto"
	TableView1[8, 0].text = "Setiembre"
	TableView1[9, 0].text = "Octubre"
	TableView1[10, 0].text = "Noviembre"
	TableView1[11, 0].text = "Diciembre"
	'Con un for recorremos la tabla y marcamos los casilleros con la imagen unchecked
	FOR j = 0 TO 11
		FOR k = 1 TO 2
			TableView1[j, k].Picture = unchecked
			TableView1[j, k].Alignment = Align.Center
		NEXT
	NEXT

END

La idea es que podamos seleccionar con un check al dar click los cuadros de Compra y Venta para los meses mostrados, en realidad lo que cargamos en el cuadro son las imagenes de “tick.png” y “notick.png”. Ponemos el codigo necesario en el evento click del TableView.

PUBLIC SUB TableView1_Click()

'Hacemos esto porque en la columna 0 tenemos los meses
IF TableView1.Column > 0 THEN
	IF TableView1[TableView1.Row, TableView1.Column].Picture = unchecked THEN
		TableView1[TableView1.Row, TableView1.Column].Picture = checked
	ELSE
		TableView1[TableView1.Row, TableView1.Column].Picture = unchecked
	END IF
END IF

END

Al hacer uso de la nueva funcion que hemos incorporado tenemos lo siguiente:

Espero que esto pueda ser de utilidad. Hasta la proxima.

“Hasta la victoria siempre”

In Memoriam Maestro Benedetti

Poema a la Clase Media – Mario Benedetti

Clase media
medio rica
medio culta
entre lo que cree ser y lo que es
media una distancia medio grande
Desde el medio mira medio mal
a los negritos
a los ricos a los sabios
a los locos
a los pobres
Si escucha a un Hitler
medio le gusta
y si habla un Che
medio también
En el medio de la nada
medio duda
como todo le atrae (a medias)
analiza hasta la mitad
todos los hechos
y (medio confundida) sale a la calle con media cacerola
entonces medio llega a importar
a los que mandan(medio en las sombras)
a veces, solo a veces, se dá cuenta(medio tarde)
que la usaron de peón
en un ajedrez que no comprende
y que nunca la convierte en Reina
Así, medio rabiosa
se lamenta(a medias)
de ser el medio del que comen otros
a quienes no alcanza a entender
ni medio.

El Control Workspace en Gambas

Este control implementa un espacio de trabajo con pestañas donde se pueden tener ventanas embebidas dentro de la ventana principal.
Para utilizarlo tenemos que añadir al proyecto el componente gb.form.mdi, por lo que nos vamos al menu Proyecto->Propiedades luego en la ventana que se abre seleccionamos la pestaña componentes y finalmente en la lista que se muestra seleccionamos gb.form.mdi

Luego aparecera en la Caja de Herramientas, en la pestaña Special el control Workspace.

Para trabajar con este control creamos un formulario principal llamado Principal, con un menu llamado Secundario con dos opciones Abrir y Salir. Al formulario le agregamos el control Workspace.

Tambien creamos otro formulario llamado Secundario que contiene un TextArea

Finalmente para abrir el formulario secundario desde el formulario principal y añadirlo en el workspace hacemos lo siguiente en el evento Click del menu Abrir

PUBLIC SUB menAbrir_Click()
	DIM sform AS Secundario
	sform = NEW Secundario
	Workspace1.Add(sform)
	Workspace1.ActiveWindow = sform
END

Con lo que tendriamos como resultado lo siguiente:

Un ultimo dato que me parece conveniente aportar es que al formulario principal debemos asignarle la propiedad:

Para que el Workspace se ajuste al tamaño de la pantalla al momento de redimensionar.

Bueno esto es todo por este post, saludos combativos 🙂

Pequeño editor con pestañas en Gambas

Despues de muuuuuucho tiempo vuelvo a publicar algo sobre mi querido Gambas en este mi humilde blog, voy a tratar de no abandonarlo mucho pero a veces se me hace complicado por las multiples cosas que tengo que realizar y tambien por la flojera ;-).
Bueno pues resulta que se me ocurrio hacer un pequeño editor de texto tipo el famosisimo gedit, con pestañitas y todo asi que puse manos a la obra, lo primero fue tratar de averiguar que control nos permite trabajar en Gambas con pestañas y bueno encontre el TabStrip, cuya documentacion mas detallada junto con todas sus propiedades, metodos y eventos las podemos encontrar aqui.

Las propiedades con las que he trabajado aqui y que son las mas importantes de este Contenedor son las siguientes:

Observamos que tenemos tres pestañas porque se ha especificado la propiedad Count=3 si queremos mas pestañas incrementaremos esta propiedad.

En este caso tenemos la propiedad Text= “Pestaña 3” con lo que establecemos el texto del encabezado de la pestaña actual en este caso la pestaña numero 3 y asi con las demas pestañas.

Ahora si vamos de una vez al editor de texto, tenemos el siguiente formulario en modo de diseño:

Hasta el momento lo unico que hace es abrir archivos de texto en las diferentes pestañas de igual manera a como lo hace el gedit, para esto he trabajado la creacion de cada nueva pestaña de la siguiente manera.

PUBLIC SUB nuevaHoja()
	DIM txtEditAux AS TextArea
	'tabDoc es el nombre del TabStrip
	'En este caso estamos incrementando la propiedad Count en 1,
	'cada vez que creamos o abrimos un nuevo documento de texto
	tabDoc.Count += 1
	'Incrementamos la variabla conTabs que cuenta el numero de pestañas
	conTabs += 1
	'Con la propiedad index establecemos el indice de la pestaña actual,
	'en este caso va a ser el numero de la ultima pestaña creada establecida en conTabs
	tabDoc.Index = conTabs
	'Cuando se va a crear un documento nuevo se mostrara el siguiente mensaje en el encabezado de la pantalla,
	'"Documento N no guardado" donde N es el numero de la pestaña abierta
	tabDoc.Text = "Documento " & Str(tabDoc.Index + 1) & " no guardado"
	'Con las lineas de codigo siguientes establecemos dentro de cada contenedor el Text Area
	'que pusimos en la primera pestaña en modo diseño
	txtEditAux = NEW TextArea(tabDoc)
	txtEditAux.X = txtEdit.X
	txtEditAux.Y = txtEdit.Y
	txtEditAux.Height = txtEdit.Height
	txtEditAux.Width = txtEdit.Width
	txtEditAux.Visible = TRUE
END

Para abrir un documento de texto ya existente he implementado el siguiente metodo, el cual tambien hace uso en parte del metodo anterior.

PUBLIC SUB menAbrir_Click()
	DIM arrCad AS NEW String[]
	DIM txtTemp AS TextArea
	DIM c AS String
	DIM ruta AS String
	'Uso Dialog para desplegar una ventana seleccionadora de documentos
	Dialog.Title = "Seleccione un archivo"
	'Con la propiedad Filter filtramos los tipos de documentos permitidos, en este caso archivo txt
	Dialog.Filter = ["*.txt", "Archivos de Texto"]
	'El metodo OpenFile retorna Falso si el usuario ha clickeado en OK o verdadero si cancelo la opcion
	IF NOT Dialog.OpenFile() THEN
		'Con Dialog.Path obtenemos la ruta del archivo seleccionado
		ruta = Dialog.Path
		'Con el metodo Load de la clase File cargamos el contenido del archivo como una cadena de texto
		'Con el metodo Split cortamos la cadena separandola por cada linea de texto del archivo
		arrCad = Split(File.Load(ruta), "\n")
		'La propiedad Children devuelve todos los controles del contenedor(pestaña) actual,
		'en este caso solo tenemos el Text Area, por lo que su indice es cero
		'y lo asignamos a la variable txtTemp
		txtTemp = tabDoc.Children[0]
	END IF
	'Si el area de texto actual no esta vacia abrimos otra pestaña con otra hoja lista.
	IF txtTemp.Text <> "" THEN
		nuevaHoja()
	END IF
	'Aqui obtenemos cada cadena de texto de las que fueron cargadas del archivo
	FOR EACH c IN arrCad
		'Establecemos como encabezado de la pestaña la ruta del archivo
		tabDoc.Text = ruta
		'Asignamos la hoja de texto actual a la variable txtTemp para manipular su contenido
		txtTemp = tabDoc.Children[0]
		'En este caso con el contenido del archivo
		txtTemp.Text &= c & "\n"
	NEXT

END

Finalmente aqui tenemos el pequeño programita en ejecucion:

Cualquier duda, sugerencia, aporte, critica murmuracion, lamento, etc 🙂 espero me la puedan hacer llegar a este humilde espacio, eso es todo por hoy ya me voy a dormir.
Saludos.