Curso de Gambas - Primer proyecto (2)

4 - Primer proyecto (2)

[editar]
Tutorial creado por KDE-Hispano. Extraido de: http://www.kdehispano.org/curso_gambas
09 de Noviembre de 2005
Seguimos con la seccion de Gastos ...

Todo estaba muy bonito, pero yo ahora queria varias cosas:

- Que en el campo de texto "Cantidad", no se pudieran meter letras, solo numeros.
Que si no se escribia nada en "concepto" o que si la cantidad era cero no me dejara continuar.
Todo esto se revisaria cuando se pulsara el boton "Insertar gasto"

Bueno, lo de mirar si no habia nada en "cantidad" y en concepto fue facil, doble click en el boton (evento click) y poner algo tal que asi:

IF (NOT cantidad.Text) THEN
   Message.Warning("Debe especificar una cantidad")
ELSE IF (NOT concepto.Text) THEN
   Message.Warning("Debe especificar un concepto")
ELSE
   Message.Info("Todo correcto")
END IF


Aunque parezca extraño, funciono a la primera ... pero ... cuando yo me referia a que no hubiera o hubiese nada me refiria a que si la cantidad era cero que tambien saltara la "alarma".

Para ello, y mirando la ayuda (cosa más útil, oiga), descubri la maravillosa función val() que transforma un string a un numero (manteniendo las "," de los decimales).

Asi modifique la primera linea para que fuera algo como:


IF ((NOT cantidad.Text) OR (Val(cantidad.Text) = 0)) THEN
Si, abuso demasiado de los parentesis, que le vamos a hacer :P

Con eso solucionado el problema de las cantidades, ahora me venia lo gordo, permitir solo "ciertas teclas".

La odisea del _KEYPRESS

Viendo otros ejemplos, me di cuenta que existe el evento keyPress, que viene a ser mas o menos lo que pasa cuando pulsas (sin soltar) una tecla. Mi mente maquino algo asi como que si teniendo el foco la caja de texto de "cantidad", si se pulsaba una tecla que no fuera un número
devolviera false y que no se escriba nada.

O sea, algo asi en el keyPress de la caja de texto "cantidad".


IF (NOT ((key.Code >= 0 AND key.Code <= 9)) THEN
  RETURN FALSE
END IF


Ains ... que inocente, pensar que esto iba a funcionar.

Despues de quedarme a cuadros de la descripcion del error (Error en linea 35... que descriptivo, ¿no?), hice lo que (como siempre) debí de haber hecho antes de probar a lo loco, esto es, ver un ejemplo que use algo asi. Y el ejemplo DataReportExample (que mas adelante miraría más a fondo para mysql ... ,bbrrr, que mieooo) usaban algo parecido (en el modulo).

Con esos conocimientos adquiridos en el portapapeles modifiqué el codigo anterior tal que ...

IF (NOT ((key.Code >= Asc("0") AND key.Code <= Asc("9")))) THEN
  STOP EVENT
END IF


Bueno, funcionar, funcionaba, pero como te equivocaras al meter la cantidad ... jeje, ya que cualquier tecla que no fuera un numero no se ejecutaba, ya fuera la "a" como el "tabulador", o el "supr", asi como los cursores.

Otra vez mirando en la ayuda, localicé las teclas que me faltaban, quedando el codigo asi:


IF (NOT ((key.Code >= Asc("0") AND key.Code <= Asc("9")) OR key.Code = key.Delete OR key.code = key.Left OR key.Code = key.Right OR key.Code = key.Tab OR key.Code = key.BackSpace OR key.Code = key.Shift OR key.Code = Asc("."))) THEN
 STOP EVENT
END IF


Ala, yo creia que ahí todo habia acabado... PERO NO !!!, ya que si metía el punto, la función val se ponía "tonta" (esto es por que aquí, en España, los decimales van con coma (","), no con punto ...) así que modifiqué el código de nuevo (tantos cambios lo tendría ya mareado) y quedo definitivamente asi:


IF (key.Code = Asc(".")) THEN
  cantidad.Insert(",")
END IF
IF (NOT ((key.Code >= Asc("0") AND key.Code <= Asc("9")) OR key.Code = key.Delete OR key.code = key.Left OR key.Code = key.Right OR key.Code = key.Tab OR key.Code = key.BackSpace OR key.Code = key.Shift OR key.Code = Asc(","))) THEN
  STOP EVENT
END IF


Debido a mi "inspiración" encontre la funcion Insert('algo') de una caja de texto que inserta "algo" en la posicion que esta el cursor. Asi quedó todo más "pofesional",

Mi masoquismo pedía más, asi que la osadía del ignorante me llevo a intentar utilizar el DatePicker de KDE, pero eso, será en el siguiente post.

P.D.: Ya que es la primera vez que posteo código, os recuerdo que el código es como las novias, por muy buena que esté la tuya, siempre habrá alguien que tenga una mejor.

Asi que si teneis una novia que esté más "buena" y la quereis "compartir", avisarme !!! :D

(Esto es tambien aplicable a los "novios", programadoras, que... haberlas, las hailas)
[editar]

4 opiniones

Excelente

Soy el del comentario anterior, ya me di de alta...
Excelente

Excelente aporte llevo menos de 4 horas en GAMBAS y este a sido el mejor aporte, muy bien explicado y me entusiasma a seguir con el lenguaje excelente muchas gracias
Codigo fuente.

Excelentes tus "memorias" con gambas, quisiera pedirte el código fuente sino no es mucha molestia para poder probar tu aplicación, ya que estoy interesado en el tema de gambas.
Tableview.

Estoy desarrollando un programita con gambas, me tope con un problema con el tableview,:
1)los datos del texbox deseo insertarlos en la tabla, de uno por ves, para el primero funciona ok, el segundo se despelota, me rellena 2 filas con el mismo dato!
2) alguien sabe como saltar este problema. (las ayudas del gambas no estan presentes para elte punto. Gracias.

Tutoriales relacionados con 'Curso de Gambas'

Hace muuuuucho tiempo, cuando empezaba a aprender algo sobre php, me llamó la atención un... Más »

Autor y licencia de 'Curso de Gambas'


Tutorial de KDE-Hispano. Extraido de: http://www.kdehispano.org/curso_gambas CopyLeft
Creative Commons License
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.