Archivo

Entradas Etiquetadas ‘RealBasic’

Orden de tabulación en RealBasic

Sábado, 1 de mayo de 2010 Miguel Ricarte 3 comentarios

Cuando añadimos un objeto en una ventana mientras programamos con RealBasic, por defecto, el objeto puede ganar foco al tabular.

Podemos elegir que no pueda ganar foco mediante el teclado presionando la tecla Tab hasta que llegue el foco a nuestro objeto, desticando la casilla “TabStop” en la columna de la lista las propiedades del objeto activo.

Que un objeto tenga foco se marca con un corondel alrededor del mismo, en mi Mac OS X, el corondel que rodea mis objetos es de color azul.

El que un objeto gane foco es también un evento que podemos aprovechar para que se disparen las acciones que deseemos. Para añadir codigo que obedezca a esto haremos doble click sobre el objeto en cuestión y escribiremos los algoritmos correspondientes después de hacer click en el control “GotFocus”. Leer más…

Orden en la coordenada Z en RealBasic

Viernes, 30 de abril de 2010 Miguel Ricarte Sin comentarios

Igual que un eje de coordenadas, la medida de la Z indica lo profundo que está un objeto.

Los objetos que colocamos en una ventana de nuestros programas hechos con RealBasic se dibujan en el orden que tienen según su posición en el eje Z de profundidad. Se dibujará primero la ventana y luego uno a uno todos nuestros objetos de abajo hacia arriba, de modo que puede ocurrir que un objeto que hemos añadido el último esté por encima de otro que añadimos antes y esto no nos convenga.

Para solucionar esto si no podemos/queremos separar los objetos, podemos utilizar los controles que resalto en la captura de esta entrada.

Categories: software Tags: ,

Color Aleatorio en RealBasic

Domingo, 11 de abril de 2010 Miguel Ricarte 3 comentarios

A veces recurrimos a maneras que parecen extravagantes para eliminar un error en nuestros programas.

Una manera simpática de averigüar si nuestro programa pasa a un punto concreto es pedir a nuestro programa que cambie el color de cualquier elemento que sepamos que se ve con claridad. Podemos pedirle que lo haga además en un pequeño bucle para que se note más. El código es este:

Function ColorAleatorio() as Color

return HSV ( rnd, rnd, rnd )

End Function

Usamos HSV porque así no tenemos que complicar la fórmula ya que los valores aleatorios (rnd) coinciden con el nivel de este modo de representar el color ( [0,1] ).

Categories: sin categoría Tags:

Color aleatorio en RealBasic

Domingo, 28 de marzo de 2010 Miguel Ricarte Sin comentarios

Puedo llamar la atención del usuario de mi Aplicación hecha con RealBasic alterando el color de cualquier elemento de la GUI con cambios frenéticos de color. Para ello pondría en marcha un bucle con n repeticiones y para cada ciclo colocaría un color elegido a suerte de manera automática por el ordenador. Para que el ordenador “eche a suertes” el color de cada, p.e.: 1/25 segundos le puedo “preguntar” el color a la siguiente función:

Function  ColorSuertes()  as  Color

return  HSV(  rnd,  rnd,  rnd  )

End  Function

Categories: software Tags:

RealBasic, pasar color de CMYK a RGB

Viernes, 26 de marzo de 2010 Miguel Ricarte 1 comentario

Muchos trabajos de imprenta o de laboratorio fotográfco trabajan en cuatricomía CMYK. Usan las cuatro tintas: Celeste, Magenta, Amarillo y Negro.
Nosotros tenemos que mostrar colores con RealBasic o queremos obtener los valores RGB, o sea, Rojo, Verde y Azul que se usan en pantalla, para ello podemos utilizar la siguiente función:
Function  CMYK_A_RGB(c  as  Double,  m  as  Double,  y  as  Double,  k  as  Double)
As  Color
dim  rojo,  verde,  azul  as  Double
//  Obtiene Rojo, Verde, Azul (RGB)  en el rango [0,1]
rojo  =  1  -­  Min(  1,  c  *  (1  -­  k)  +  k  )
verde  =  1  -­  Min(  1,  m  *  (1  -­  k  )  +  k)
azul  =  1  -­  Min(  1,  y  *  (1  -­  k)  +  k)
return  RGB(  255  *  rojo,  255  *  verde,  255  *  azul  )
End  Function

Categories: software Tags: , ,

RealBasic AcceptFocus

Sábado, 20 de marzo de 2010 Miguel Ricarte 4 comentarios

Me encanta utilizar el teclado lo más posible, lo percibo más natural y rápido que el ratón en multitud de ocasiones.
Como RunRev y FileMaker, RealBasic también permite establecer el que los objetos acepten foco o no. Lo explico: en FileMaker puedes pasar el foco de uno a otro objeto mediante tabulador o intro, tú eliges. Además eliges si a un objeto se accede por uno u otro método, o no se accede, si se salta.
En RealBasic, de la misma manera eliges si acepta foco o no, pero además puedes alternar esta propiedad durante la ejecución del programa.
Un ejemplo de control que a veces conviene y a veces no conviene que tenga foco es una barra de desplazamiento. Si la barra de desplazamiento es como las del Finder de Mac OS X, normalmente no nos convendrá que pueda ganar foco mediante el teclado, pero si esta barra de desplazamiento es la de un control deslizante, sí conviene.

Categories: software Tags: ,

Comunicación IPC en RealBasic

Jueves, 18 de marzo de 2010 Miguel Ricarte Sin comentarios

IPC (Inter Process Communication) es un socket que sólo se comunica con otros sockets que viven en la misma máquina. RealBasic tiene una clase que se llama IPCSocket que sirve para administrar las comunicaciones entre procesos.

Como se trata de comunicaciones dentro de una máquina no se usan IP y puerto (ej.: 84.120.180.239:8081), sino rutas (ej.: /tmp/MyApp.app). IPCSocket se comporta exactamente como un TCPSocket, es decir:

Un socket tiene en marcha una instrucción Listen (escuchar), y otro socket pone en marcha una instrucción Connect (conectar). Una vez que se establece una conexión, ambos sockets reciben el evento Connected (conectado) y pueden comenzar a transferir datos entre ellos utilizando las instrucciones Write (escribir), Read (leer) y ReadAll (leerlo todo).

Categories: software Tags: , , ,

Orden de disparo de eventos en distintas plataformas

Martes, 9 de marzo de 2010 Miguel Ricarte Sin comentarios

Una gran ventaja de RealBasic es que compila para Mac OS X (Intel y Power pc), Mac OS Classic, Windows 32 y Linux. La magia de este entorno de programación es grande, lo que es perfecto para por ejemplo, aplicaciones que son la cara de un motor de bases de datos como PostgreSQL. Pero cuando desarrollamos algo más y nos vemos forzados a afinar mucho es cuando empezamos a descubrir las diferencias entre plataformas. No hablo de mejor y peor, sino de otra manera. Por ejemplo, hemos creado un programa que realiza una acción cuando el usuario presiona una tecla. Pues esto no es universal, lo es a groso modo, pero no lo es si afinamos un poco más, lo explico: puedes encontrar que en una plataforma se manda el evento a tu programa en el momento en el que se hunde la tecla y en otra plataforma se mandará el mismo evento a tu programa, pero será cuando la tecla se suelte. Esto no cambia nada para un programa corporativo, pero para un programa que depende mucho del momento exacto, es una pega. Otro ejemplo, en nuestros programas alternamos entre ventanas, pues puedes encontrarte con que en una u otra plataforma se ejecute antes el código que hayas escrito relacionado con obtener foco antes que el código que hayas escrito relacionado con activar. Para escapar de estas trampas, una solución es capturar el estado de ambos eventos y que tu código se ejecute cuando ambos ocurran. Otra solución es más pesada, crear condiciones según la plataforma, pero esto alarga el código. Para averiguar qué evento se dispara entes en qué plataforma recuerda que RealBasic trabaja con precisión de microsegundos, captura un millon de registros de tiempo cada segundo.

Categories: software Tags: ,

UTF-16 vs. UTF-8

Lunes, 8 de marzo de 2010 Miguel Ricarte 1 comentario

En UTF-16 cada letra o carácter se define con 2 Bytes, en UTF-8 con 1 Byte. Esto es algo a tener en cuenta en RealBasic y en Java. Estoy evaluando una contabilidad en un iMac Power PC que funciona con java. Bien, pues un archivo de texto de TextEdit como texto simple (.txt), no como RTF no es una balsa de salvación en cuanto a pensar que un .txt es algo simple, algo monocolor, no lo es, también tiene “apellidos”. En este sentido el programa TextWrangler es una ayuda eficaz porque permite cambiar la codificación a UTF-8, que en este caso, es lo que necesito. Otro caso de este mismo tema es respecto a RealBasic, imagina que tenemos un txt con formato desconocido (y resulta que es UTF-16), RealBasic lo interpretará como UTF-8, y al leerlo Byte a Byte, no por parejas, pues el resultado es “basura”.

Categories: software Tags: ,

Detectar teclas en RealBasic

Martes, 16 de febrero de 2010 Miguel Ricarte Sin comentarios
En el siguiente ejemplo detecto si se ha presionado la tecla “s” y por ello, cierro el programa:
If Keyboard.AsynckeyDown(&h01) Then
Quit
Categories: software Tags: