Selector de Colores - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html) +--- Tema: Selector de Colores (/thread-1345.html) |
Selector de Colores - Shordi - 04-05-2023 He necesitado para un proyecto un selector de colores al estilo del que el IDE muestra cuando necesita seleccionar un color, por ejemplo, al pulsar sobre el botón de la propiedad Background. Su aspecto es éste: Como veis, prácticamente igual que el del IDE, salvo por el orden de los colores. Hasta donde lo he probado funciona bien... peeeero, después de tres días de pelearme con las classes del sistema para obtener los colores por defecto, me he rendido y he acabando haciendo esto: Código: $aColors.Add([Color.Background, "Background"]) ¿Alguien conoce una manera más elegante de crear ese Variant[], es decir, obtener las constantes y los valores de la clase Color, sin tener que ponerlos a pedal? Es que así queda como un poco cutre... Saludos RE: Selector de Colores - tincho - 04-05-2023 (04-05-2023, 12:03)Shordi escribió: ¿Alguien conoce una manera más elegante de crear ese Variant[], es decir, obtener las constantes y los valores de la clase Color, sin tener que ponerlos a pedal? Se me ocurre esta forma: Código: Dim myClass As Class = Classes["Color"] RE: Selector de Colores - Shordi - 05-05-2023 ¡Joder, qué simple! Pues ya te digo que estuve dos días enteros atrapado en eso como un pasmarote. Pa que veas el nivel... Gracias, tron, es justo lo que buscaba. Saludos Ah... no vale. Con eso obtienes sólo las constantes, es decir los colores puros, pero, y son más interesantes aún, no obtienes los colores del sistema. Si modificas el código más o menos así: Código: For Each sSymbol In myClass.Symbols algo así como Código: dim ncolor as integer Se puede hacer un enfoque mixto donde los colores "simples" se obtengan con tu bucle y los del sistema con mi aproximación chapucera... pero sigue siendo poco elegante. Gracias por tu interés Saludos RE: Selector de Colores - tincho - 05-05-2023 (05-05-2023, 08:46)Shordi escribió: Se puede hacer un enfoque mixto donde los colores "simples" se obtengan con tu bucle y los del sistema con mi aproximación chapucera... pero sigue siendo poco elegante. Si, yo estuve rompiéndome el coco un rato pero no encontré la manera de obtener esos colores Null creo que el interprete los carga de alguna manera al inicio del programa. Encontré las siguientes clases que mencionan un método llamado defaultBackground() pero todos en el componente gb.gtk Código: $ find . -type f -exec grep -H 'defaultBackground' {} \; Nota: Envié un email a la lista internacional preguntando por el asunto, a ver que sale de ahí. RE: Selector de Colores - Shordi - 05-05-2023 Genial. Han respondido en la lista y esto se queda así tras la respuesta de Bruce Steers Código: Dim sSymbol As String Gracias!! Saludos Lo que me fastidia es que esas clases (object, classec, etc.) las he usado cientos de veces y aún así me lío con ellas que te cagas. Viejuno estoy, oiga... Saludos RE: Selector de Colores - tincho - 05-05-2023 (05-05-2023, 13:03)Shordi escribió: Genial. Han respondido en la lista y esto se queda así tras la respuesta de Bruce Steers Perfecto. Hice unos cambios para usar una collection en vez de un Variant[]. Alguien una vez me convenció de usar colecciones Saludos. RE: Selector de Colores - tincho - 05-05-2023 Shordi ¿Viste la version minimalista del la lista inernacional? Código: For Each sSymbol As String In Classes["Color"].Symbols RE: Selector de Colores - Shordi - 05-05-2023 Sí, mola. El problema de ese tipo de sentencias es que con el tiempo, cuando tienes que releer el código se hacen farragosas... "Código ofuscado" creo que lo llaman. yo lo he dejado así en mi programa Código: .Symbols La duda que me queda es si separar en la lista según tipo, como hace el IDE o dejarla alfabética. No sé qué es más apropiado. También resaltar lo que ya he dicho otras veces: Te rompes el coco, haces cien pruebas escribes decenas de líneas de código y al final, cuando lo solucionas, todo se reduce a unas muy pocas líneas. A veces una sola. Ser simple es lo más difícil, lo juro. Saludos RE: Selector de Colores - tincho - 06-05-2023 (05-05-2023, 20:44)Shordi escribió: Es lo mismo y me parece más legible. si, estoy de acuerdo, ademas no me gusta cuando las variables están declaradas sobre la marcha y no todas al comienzo del método, pero bueno es otra manera de hacerlo en menos lineas. RE: Selector de Colores - Shordi - 14-05-2023 Al final he modificado el formulario ColorSelector para que ofrezca los colores de la lista como hace el IDE: por categorías. Es decir, primero el transparente, luegos los colores del tema del escritorio y luego los colores estándar. Lo he modificado simplemente porque acostumbrado al del IDE me perdía buscando en la lista alfabética... Lo podéis encontrar en https://gitlab.com/shordi/ColorSelector También he subido un vídeo al Youtube presentándolo. Espero que os guste. Saludos |