How to dynamically generate GUI

Continuing with the previous post on Time Zones Map with World Clocks that serve as an example of how to build dynamically graphical user interfaces - GUI, when it is needed and not before. All examples are designed in Excel 2010 compatible with Excel 2007.

When I decided to create a World Clocks map with geolocated cities, I didn't think the biggest problem would be to upload the file on AyudaExcel forum, which is limited to compressed files of less than 97.7 KBytes.

The file has about 6 MBytes uncompressed and compressed over 1 MByte, so it was impossible to upload to the forum. After several hours I managed to occupy only 78.4 KBytes, thanks to the dynamic generation of all objects, clocks, cities and the world map that can be downloaded from my previous article:


I now share the new version 2.0 that occupies 168 KBytes and offers three new features:
  • World Map with day and night updated every 15 minutes
  • Translations into Spanish and English
  • Stars do not appear



As in the previous version, initially has a shape of each type needed to generate a map of cities and clocks. The initial forms are five:
  • Mapa - It is an image and is empty when you open the file.
  • Reloj0 - It is an analog clock graph larger than others and there is only one.
  • RelojDigital - It is a TextBox with a unique digital clock that appears when you click on the map.
  • Reloj1 - It is a graph of the first of the 34 analog clocks which is used to clone others.
  • Ciudad1 - It is an option button that represents the first of the cities, used to clone others.
Without graphical user interface - GUI dynamic generation, the application would look simpler and with minimal usability:



Sub Workbook_Open() dynamically generates a GUI with the following procedures:
  • RellenaTiempos - Tiempo sheet has only 4 rows and the rest are copied until row 146.
  • CreaMapa(True) - The day and night image of the world map is downloaded from the Web.
  • CreaRelojes - Generates 33 clocks from Reloj1 placing them around the map.
  • CreaCiudades - Generates all clocks into the Ciudades sheet from Ciudad1 with geolocation on the map, depending on their geographic coordinates.

Mundo sheet

The end result is a world map with days and nights, downloaded every 15 minutes from the following Switzerland website: www.fourmilab.ch, developed and maintained by John Walker, founder of Autodesk, Inc. and co-author of the popular AutoCAD program.

34 clocks are generated dynamically appointed as a Reloj1 to Reloj34 and at least 34 cities named as Ciudad1 to Ciudad34, as shown in the figure:

Initially each sheet contains the minimum number of rows and the remaining rows are dynamically generated.

Tiempo sheet


Contains formulas in rows 3 and 4 to get the angle of the analog clocks hands. The macro RellenaTiempos fill 242 rows and paste only the values generated by the formulas to reduce the execution time of the sine and cosine functions.

The viewing angle of the hours hand has simplified  to only change every 10 minutes and the minutes hand changes every 15 seconds. Of course, the seconds hand changes every second.

Ciudades sheet

The routine CreaCiudades copy row 3 down to get up to 700 cities.

Relojes sheet

The routine CreaRelojes copy row 4 down to obtain the information of the 32 analog clocks and their cities.

Acknowledgements

I have to publicly thank and acknowledge the great work from:

George Lungu to write very interesting articles on his blog Excel Unusual
This work has been inspired by: How to Make an Analog Clock in Excel

Chip Pearson to learn from his blog how to:

Web Services
GeoLookupXML wiki.wunderground.com

Download the new version from here:

RelojesMundialesPW22.xlsm




WARNING: This software is not designed for commercial use and it is Copyleft and licensed "as is" without assuming the author any consequence arising from the use thereof for purposes other than education.


Licencia de Creative Commons
RelojesMundialesPW20.xlsm by Pedro Wave is licensed under a

The best thing is to see the code implemented and designed to understand the dynamic generation of graphical user interfaces, because the code is not hidden or protected.

Traducción al español aquí.

Cómo generar interfaces gráficos dinámicamente

Continuando con el tema anterior, sobre un Mapa de Zonas Horarias con relojes mundiales, servirá de ejemplo de cómo generar interfaces gráficos de usuario - GUI de forma dinámica, o sea, cuando se necesiten y no antes.

Cuando me propuse crear un mapa mundial de relojes con las ciudades geolocalizadas no pensé que el mayor problema sería subir el fichero al foro de AyudaExcel, que está limitado a archivos comprimidos de menos de 97.7 KBytes.

El fichero ocupaba unos 6 MBytes sin comprimir y más de 1 MByte comprimido, por lo que era imposible subirlo al foro. Después de varias horas de trabajo conseguí que ocupara sólo 78.4 KBytes, gracias a la generación dinámica de todos los objetos, relojes, ciudades y el mapa mundial que se puede descargar desde mi anterior artículo:

Mapa Mundial con relojes marcando las horas en Excel

Ahora comparto la nueva versión 2.0 que ocupa 168 KBytes, diseñada en Excel 2010 compatible con Excel 2007,y cuenta con tres nuevas características:
  • Mapa Mundial con días y noches actualizado cada 15 minutos
  • Traducciones al español y al inglés
  • No aparecen estrellas
Como en la versión anterior, inicialmente cuenta con una forma de cada tipo necesario para generar el mapa de ciudades y relojes. Las formas iniciales son cinco:
  • Mapa - Es una Imagen y está vacía al abrir el archivo.
  • Reloj0 - Es un gráfico con un reloj analógico más grande que los demás y sólo hay uno.
  • RelojDigital - Es un TextBox con un reloj digital único que aparece cuando se pincha en el mapa.
  • Reloj1 - Es un gráfico con el primero de los 34 relojes analógicos con el que se clonarán los demás.
  • Ciudad1 - Es un botón de opción que representa la primera de las ciudades, con el que se clonarán las demás.
Sin la generación dinámica del interface gráfico de usuario - IGU, la aplicación tendría esta apariencia tan simple y con mínima usabilidad:


La rutina Sub Workbook_Open() genera dinámicamente un GUI con los siguientes procedimientos:
  • RellenaTiempos - En la hoja Tiempo sólo existen 4 filas y el resto son copiadas hasta la fila 146.
  • CreaMapa(True) - Descarga de la Web el fichero con el mapa mundial con las zonas diurnas y nocturnas.
  • CreaRelojes - Genera 33 relojes a partir del Reloj1 situándolos alrededor del mapa.
  • CreaCiudades - Genera todas las ciudades de la hoja Relojes a partir de la Ciudad1 y las geolocaliza en el mapa, según sus coordenadas geográficas.

Hoja Mundo

El resultado final es un mapa mundial de tipo día-noche, descargado cada 15 minutos de la siguiente página web suiza: www.fourmilab.ch, desarrollada y mantenida por John Walker, fundador de Autodesk, Inc. y co-autor del famoso programa AutoCAD.

Se generan dinámicamente 34 relojes nombrados como Reloj1 a Reloj34 y al menos 34 ciudades nombradas como Ciudad1 a Ciudad34, como se muestra en la figura:


Inicialmente cada una de las hojas contiene el mínimo número de filas para poder generar dinámicamente el resto de las filas.

Hoja Tiempo


Contiene fórmulas en las filas 3 y 4 para obtener el ángulo de las manecillas de los relojes analógicos. La macro RellenaTiempos rellena 242 filas y sólo pega los valores generados por las fórmulas para reducir el tiempo de ejecución de las funciones seno y coseno.

Se ha simplificado el ángulo de visualización de la saeta de las horas para que solo cambie cada 10 minutos y la saeta de los minutos para que cambie cada 15 segundos. Por supuesto que la saeta de los segundos cambia cada segundo.

Hoja Ciudades

La rutina CreaCiudades copia la fila 3 hacia abajo para poder obtener hasta 700 ciudades.

Hoja Relojes

La rutina CreaRelojes copia la fila 4 hacia abajo para poder obtener la información de los 32 relojes analógicos y sus correspondientes ciudades.

Agradecimientos

He de dar públicamente las gracias y reconocer el gran trabajo de:

George Lungu por escribir interesantísimos artículos en su blog Excel Unusual
Este trabajo se ha inspirado en: How to Make an Analog Clock in Excel

Chip Pearson para saber cómo:
Downloading a file from the Web
Time Zone and Daylight Time

Servicios Web
World Clock www.timeanddate.com/worldclock/
Earth Viewer www.fourmilab.ch/earthview/
GeoLookupXML wiki.wunderground.com

Descarga la nueva versión desde aquí:

RelojesMundialesPW22.xlsm


ATENCIÓN: Este software no está diseñado con fines comerciales y se cede bajo licencia Copyleft "tal cual es" sin asumir el autor ninguna consecuencia debida al uso del mismo para otros fines que no sean educativos.

Licencia de Creative Commons
RelojesMundialesPW20.xlsm by Pedro Wave is licensed under a
Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Based on a work at cid-6b219f16da7128e3.office.live.com

Lo mejor es ver el código implementado y las hojas diseñadas para comprender la generación dinámica de interfaces gráficos de usuario, pues el código no está oculto ni protegido.

English translation of this post here.

Time Zones Map with World Clocks

Each day of the year the Earth turns around its axis of rotation, to give the face or the back to the sun, which shines its light more or less hours depending on the latitude or angular distance from Ecuador, as the circles of latitud or parallels.

The 360° of the celestial sphere is divided into 24 time zones of 15 degrees each and determine the solar time for each of the main 24 lines of longitude o meridians.

Solar time varies throughout the year in about 15 minutes depending on the ecuation of time.

Time zones are defined by national borders, so it does not match solar time, and less in some countries when their clocks ahead one hour in daylight saving time.

It's enough confusing to know the current time or hour in any place on Earth for a traveler who moves through different time zones, to arrange a videoconference between countries or to find out what the next working round in a multinational company which designs in a meridian, verify 8 hours later and write documents next 8 hours in another country, in continuing cycles of 24 hours without rest, in which staff are always awake, as in the Empire on which the Sun never sets.

To find out what time is it and why, it's good to know the timeline of time measurement technology but it is better to have a good World map with the updated hours of any city.

Get Current Time with World Time Server


world time server
Enter a country or city:


On the Web there are many world clocks and maps with time zones as 24timezonesworldtimezonemytimezonemap o timeticker, but there aren't good public use programs for synchronized times, so I've been doing an Excel spreadsheet to tell the time anywhere in the world.


You can download it from the AyudaExcel.com forum if you are previously registered in less than a minute:

DOWNLOAD:
World Map with the hours ticking clocks in Excel


NOTE: An updated version can be downloaded by reading the following post "How to dynamically generate GUI" from here.

RelojesMundialesPW22.xlsm


The global clock synchronization takes place every 60 minutes through connections to the servers of the page www.timeanddate.com/worldclock

Visit the World Clock - Time Zones

The main features of this map of world clocks are:
  • World map with 32 analog clocks and infinite digital clocks
  • Clocks in their time zones and daylight saving adjustment
  • Update clocks to Universal Time UTC and GTM real / Zulu
  • 24 analog clocks in 24 time zones
  • 10 programmable analog clocks with friends lists
  • 24-hour digital clocks at any location on the map
  • 34 cities associated with the 34 analog clocks
  • List of more than 650 cities in 230 countries
  • Links to information on each city
  • Creating more cities geolocalized on the map
  • Night of shooting stars

The Three Kings know the answer to this question:
What to do to see the star on the watches map?

If you know the answer, write it in a comment.

Traducción al español aquí.

Mapa de Zonas Horarias con relojes mundiales

Cada día del año la Tierra da una vuelta sobre su eje, en su giro de rotación, para darle la cara o la espalda al Sol, que la ilumina con su luz más o menos horas dependiendo de la latitud geográfica o distancia angular al Ecuador, según los círculos de latitud o paralelos.

Los 360º de la esfera terrestre se dividen en 24 husos horarios de 15º cada uno, determinando la hora solar para cada una de las 24 líneas de longitud o meridianos.

La hora solar varía a lo largo del año en unos 15 minutos según la ecuación de tiempo.

Los husos o zonas horarias están delimitados por las fronteras entre países,  por lo que no coinciden con el horario solar, y menos en algunos países que adelantan una hora sus relojes en el horario de verano.

Es confuso saber la hora actual en algún lugar de la Tierra para un viajero que se mueve por distintas zonas horarias, para concertar una videoconferencia entre distintos países o para saber cuál será el próximo turno de la jornada laboral en una multinacional en la que se diseña en un meridiano, se verifica 8 horas después en otro y se documenta 8 horas después en otro país, en ciclos continuados de 24 horas, sin descanso, en los que siempre hay personal despierto, como en el Imperio en el que nunca se ponía el Sol.

Para saber qué hora es y por qué, es bueno conocer la cronología de las tecnologías de la medición del tiempo pero es mejor disponer de un buen Mapa Mundial con la horas actualizadas de cualquier ciudad.

En la Web hay muchos relojes mundiales y mapas con los husos horarios como 24timezonesworldtimezonemytimezonemap o timeticker, pero no hay buenos programas de uso público con las horas sincronizadas, por lo que he preparado una hoja Excel para saber la hora en cualquier lugar del Mundo.


Se puede descargar en el foro de AyudaExcel.com, registrándose previamente en un minuto:

DESCARGA:
Mapa Mundial con relojes marcando las horas en Excel


NOTA: Una versión mejorada se puede descargar leyendo el siguiente artículo "Cómo generar interfaces gráficos dinámicamente" desde aquí.

RelojesMundialesPW22.xlsm


La sincronización de los relojes mundiales se realiza mediante conexiones cada 60 minutos a los servidores de la página www.timeanddate.com/worldclock

Visit the World Clock - Time Zones

Get Current Time with World Time Server


world time server
Enter a country or city:


Las características principales de este mapa de relojes mundiales son:
  • Mapa mundial con 32 relojes analógicos e infinitos relojes digitales
  • Relojes en sus zonas horarias y con ajuste del horario de verano
  • Actualización de los relojes al Tiempo Universal real UTC y GTM/Zulu
  • 24 relojes analógicos en las 24 zonas horarias
  • 10 relojes analógicos programables con listas de amigos
  • Relojes digitales de 24 horas en cualquier localización en el mapa
  • 34 ciudades asociadas a los 34 relojes analógicos
  • Lista de más de 650 ciudades de 230 países
  • Enlaces a información completa de cada ciudad
  • Creación de más ciudades sobre el mapa con geolocalización
  • Noche de estrellas fugaces
Los Reyes Magos conocen la respuesta a esta pregunta:
¿Qué hay que hacer para ver la Estrella en el mapa de relojes?
Si sabes la respuesta, la escribes en un comentario.

English translation of this post here.

Widgets

Pedro Wave Widget







My Calendar - Mi Calendario




My OpenDNS Clock - Mi Reloj



Use OpenDNS



Chandoo PHD Widget






DILBERT by SCOTT ADAMS





Mi Lista de Blogs- My Blog List