Yo Tambien Te Quiero… Solo Como Amigos

Yo Tambien Te Quiero… Solo Como Amigos


Tomado de http://lacostehumor.blogspot.com/

Las fechas en gambas pueden ser trabajadas con Date.
El cual se estructura de la siguiente forma:
Date = Date ( Year , Month , Day [ , Hours , Minutes , Seconds ] ) AS Date
Si quisieramos trabajar con una fecha obtenida de una base de datos y colocarla en un objeto calendar y en una caja de texto podriamos hacerlo de la siguiente forma:
Dim fec as Date
fec = resGuias["fecha"]
GuiaRemision.Calendario.Year = Year(fec)
GuiaRemision.Calendario.Month = Month(fec)
GuiaRemision.Calendario.Day = Day(fec)
txtFecha.Text = Calendario.Day & “/” & Calendario.Month & “/” & Calendario.Year
Si queremos guardar una fecha obtenida en nuestro programa en la base de datos podemos usar la siguiente funcion.
PUBLIC FUNCTION formatDateBD(fec AS Date) AS String
DIM dat AS String
dat = Year(fec) & “/” & Month(fec) & “/” & Day(fec)
RETURN dat
END
Y finalmente esto es lo que guardo en la base de datos donde el dato es de tipo Fecha segun el gestor de datos de Gambas.
Segun lo que estoy viendo esta no es la manera mas optima de trabajar pero funciona, asi que si alguien conoce alguna mejor, por favor espero me pueda ayudar.
Saludos
Bueno pues resulta que estaba queriendo utilizar el condicional IF en mi querido gambas y como estoy acostumbrado a la sintaxis de lenguajes como java y c# resulta que queria utilizar el operador de la manera tradicional de esos lenguajes:
IF condicion1 AND condicion2 THEN
‘Codigo a ejecutar al ser verdadera la condicion
END IF
Y me daba un error al evaluar la condicion2 la cual dependia directamente de la condicion1, despues de tanto romperme la cabeza para averiguar el origen del error, se me ocurrio consultar la documentacion de gambas sobre el operador IF y resulta que la sintaxis correcta es la siguiente.
IF condicion1 AND IF condicion2 THEN
‘Codigo a ejecutar al ser verdadera la condicion
END IF
En caso de que querramos usar el OR tenemos el siguiente
IF condicion1 OR IF condicion2 THEN
‘Codigo a ejecutar al ser verdadera la condicion
END IF
Recordemos que la condicion se evalua de izquierda a derecha, y tambien que no se puede mezclar las palabras clave AND IF y OR IF en una misma linea.
Aqui termino este pequeño post el cual nacio de un error minimo pero que a veces puede pasar desapercibido, la moraleja es que siempre debemos revisar la documentacion del lenguaje, por mucho que sepamos usar otros lenguajes.
Saludos.
“Hasta la victoria siempre”
Preciosa cancion.
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”
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”
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.
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
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.

Últimos comentarios