Etiqueta

26 agosto 2015

Creando nuestro propio escritorio Omnis

Por defecto, Omnis Studio presenta un escritorio con el fondo gris, es decir, el área de trabajo de la ventana principal es de color gris (al menos en la plataforma Windows). Sin embargo es posible personalizar dicho color de fondo o incluso insertar una imagen. El “truco” que exponemos a continuación, nos puede ayudar a hacer esto con facilidad.

Para lograrlo, empezaremos por añadir una nueva clase-ventana a la librería que estemos construyendo, su nombre será: “wBackground”. Una vez creada, ábrala en modo diseño y (por ejemplo) coloque una foto en ella mediante la opción del menú “Edición”, “Pegar desde archivo”. La imagen seleccionada deberá ser lo suficientemente grande, como para cubrir todo el fondo de la ventana o incluso mayor, la idea es asegurarse de que se siga viendo correctamente aún cuando se amplíe la ventana principal de Omnis, una imagen en formato JPG de 1280x1024 píxeles y a 72 dpi, puede ser suficiente, al final de éste artículo puede un ejemplo. Una vez hecho esto, deberemos modificar las siguientes propiedades de nuestra ventana “wBackground”:

$closebox = kFalse
$growbox = kFalse
$style = kSimple


Además de éstas deberemos cambiar la propiedad “$edgefloat” para fijar su valor a “kEFrightBottom” de éste modo nos aseguraremos de que la imagen en la ventana será automáticamente ajustada, cada vez que cambie su tamaño por acción del usuario. Ahora, y en el método “$construct()” de la ventana “wBackground” deberemos añadir el siguiente código:

Do $cinst.$width.$assign($root.$modes.$width)
Do $cinst.$height.$assign($root.$modes.$height)
Do $cinst.$top.$assign(0)
Do $cinst.$left.$assign(0)


A continuación, añadiremos una segunda clase-ventana con el nombre “wSuper”, a la cual añadiremos un método “$event()”con el código siguiente:

On evWindowClick

   If pClickedWindow.$name='wBackground'
     Quit event handler (Discard event)
   End If


Este código nos permitirá asegurarnos de que la ventana “wBackground” permanezca en todo momento anclada al fondo.

Ahora tan sólo nos faltará asignar la ventana “wSuper”, como superclase en todas y cada una de las clases-ventana que contenga nuestra librería. Podemos optar por hacer esto manualmente, cambiando la propiedad “$superclase” para asignarle el valor “wSuper” o bien (mi preferida) mediante el siguiente comando:

Do $windows.$sendall($Ref.$superclass.$assign('wSuper'))

Finalmente deberemos  añadir el código necesario para hacer visible la ventana “wBackground”, lo cal haremos escribiendo el comando mostrado a continuación, sobre el método “$construct” de la clase “Startup_Task” de nuestra librería en construcción:

Do $windows.wBackground.$openonce()


No hay comentarios: