Queriendo añadir el diálogo estándar de Windows para seleccionar colores mediante una acción en el Plugin NeoDouble, me encuentro con varios obstáculos que no sé muy bien cómo superar, de modo que lo que haga sea lo más razonable.

Quiero decir que lo más sencillo sería que la acción ejecutase el diálogo y retornara el color elegido por el usuario, casi de cualquier forma, y sin aprovechar del todo lo que nos ofrece el diálogo de Windows.

Cuadro de diálogo para elegir colores

La primera duda que me surge es qué debería retornar el diálogo, precisamente, cuando el usuario elige un color del mismo. O sea, no sé qué tipo de resultado es el más adecuado. Por ejemplo, cuando uno quiere cambiar el color de un objeto en Neobook ha de proporcionar el color en formato RGB, de esta forma:

SetVar "[color]" "255,255,255"

De modo que de nada serviría que yo retornara un color del tipo "TColor", tal como usamos en Delphi. No vale de nada porque no podría aprovecharse dicho color en Neobook, de no hacerse una conversión previa. Por cierto, alguna que otra acción de NeoDouble podría servir para esto.

Pero NeoDouble puede encargarse de convertir un "TColor" al formato de color que se usa en Neobook. De modo que no hay demasiado problema en retornar una cadena como "255,255,255" luego de que el usuario eliga el color "blanco" en el diálogo de que hablamos.

Ahora bien, ¿sería mejor que el color se retornara en otro formato? Tú que usas Neobook, ¿cómo te gustaría que el diálogo para elegir colores retornara el color elegido por el usuario? Se agradecerá cualquier comentario sobre este respecto.

La segunda duda que tengo (aunque tal vez esta entrada se esté alargando demasiado) tiene que ver con utilizar los colores "personalizados" del cuadro de diálogo para elegir colores, esto es, utilizar esa característica del diálogo para elegir colores, además de la evidente de elegir un color.

El usuario puede definir en el cuadro de diálogo una serie de colores "personalizados". Pero si estos colores no se guardan, y luego no se proporcionan al diálogo... simplemente se pierden entre ejecución y ejecución: simplemente no sirven de nada.

La idea es, por supuesto, que NeoDouble permita usar los colores personalizados del diálogo, aunque sea algo opcional. Entonces hay que pensar en cómo guardar los colores personalizados, y en cómo recuperarlos. Y es el caso que sucede algo un tanto raro: para establecer los colores personalizados se requiere de una especie de "Array" de 18 elementos, uno para cada color personalizado.

Y esto es lo que habría que proporcionarse (opcionalmente) a NeoDouble para mostrar el diálogo, una variable de tipo "Array" que contuviera los distintos colores personalizados. Y lo mismo debe retornar NeoDouble tras mostrar el diálogo, no sólo el color elegido por el usuario, sino los colores "personalizados" que se establecieran en el diálogo.

Pero, me estoy dando cuenta de que estoy alargando en exceso esta entrada... creo que mejor voy a dejar esta segunda duda aquí. Tengo que investigar sobre esto y no me queda claro cómo plantear el asunto, no ya en NeoDouble, sino aquí. O sea, que quería pedir tu ayuda, pero, como no tengo claro todavía cómo va a ir el asunto, no sé cómo plantear el problema.

Supongo que te mantendré informado sobre esto en un futuro. Espero que no muy lejano... porque hoy estoy un poco espeso, o sea que no me aclaro, me temo.