Nuevo control: «Doble Lista» - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Controles/Librerías/Componentes (https://gambas-es.org/forum-7.html) +--- Tema: Nuevo control: «Doble Lista» (/thread-1898.html) |
Nuevo control: «Doble Lista» - Grandamakulo - 19-03-2025 Bueno, compañeros, gracias a las inestimables enseñanzas del Magister Draconis Venator, @Shordi, me he atrevido a montar mi primer control. Por supuesto, soy yo. No podía hacer uno sencillito, no: empezar por lo fácil es de pobres.
En fin, se trata de un gestor de doble lista, sobre el que se puede crear y eliminar elementos, pasar elementos de una lista a otra, ordenar cada lista según varios criterios y obtener un «Text» utilizable como , por ejemplo, editor en un Tableview. ¿Que para qué vale? Pues... seleccionar instrumentos para adecuar una plantilla de orquesta, banda o cámara; para seleccionar una lista de personajes para un capítulo de una novela de todos los existentes; para gestionar las plantas que se llevan del semillero al huerto; objetos del espacio profundo a observar una noche por un astrónomo... Ahí queda eso. ![]() ![]() Aún le quedan flecos como: ¿Cómo narices se levanta un evento «Cambiar» similar al «Change» desde el formulario cada vez que se pulsa un grupo de botones? ¿Y cómo se crea un evento «Enter» similar al de Texbox? ¿Cómo releñes se puede usar una propiedad de la clase en el formulario? Estas tres preguntas, creo, se contestan probablemente planteando de otra manera el código del control, esto es, llevando a la clase la gestión de algunos elementos del formulario. En fin, se admiten comentarios, consejos y críticas destructivas. RE: Nuevo control: «Doble Lista» - Shordi - 20-03-2025 Mira a ver si así te vale. El evento Enter es un evento de ratón, así que supongo que te refieres al evento keypress con la tecla Enter... si no es así, dímelo y te lo apaño. Saludos RE: Nuevo control: «Doble Lista» - Grandamakulo - 20-03-2025 Creo que sí, me lo estoy estudiando, jajaja ![]() ![]() ¡¡Muchas gracias!! RE: Nuevo control: «Doble Lista» - Shell - 21-03-2025 Es muy universal este control. En su día yo pasaba fotos de modelos de una lista a otra. ![]() ![]() Pero usaba ListView. Tiene más cosas que un Listbox y puedes añadir imágenes. Por otra parte usaba Drag Drop y además seleccionaba varias imágenes y pasarlas de un lado a otro. Eso lo puedes hacer en un ListBox. Si te interesa imágenes ya sabes, ListView. Saludos RE: Nuevo control: «Doble Lista» - Grandamakulo - 24-03-2025 ¡Mucahs gracias, @Shell! RE: Nuevo control: «Doble Lista» - Grandamakulo - 24-03-2025 ¡Mucahs gracias, @Shell! RE: Nuevo control: «Doble Lista» - Grandamakulo - 25-03-2025 Bueno, @Shordi, las dos primeras dudas, aclaradas y funcionando perfectamente. En cuanto a la tercera, a ver si me sé explicar y no soy tan farragoso como siempre. ¿Cómo releñes se puede usar una propiedad de la clase en el formulario? Defino una propiedad llamada ListaSel, que es un Boolean y que vale False —por defecto— para seleccionar la lsoListaUno y True para seleccionar la lsoListaDos. En el código del formulario del control —doblelista es la clase y fdoblelista el formulario— necesito emplear esa propiedad para seleccionar sobre qué lista se realizan determinadas acciones. Por ejemplo, para añadir un texto en la lista seleccionada pulsando sobre el botón «Añadir» en el evento: Código: Public Sub tobAnadir_Click() Aquí he puesto ListaSel tal cual, pero me dice que no está definida; si escribo doblelista.ListaSel, tampoco —amén de que se me hace extrañísimo—. ¿Cómo la «llamo o la «invoco» —¡¡¡ListaSel!!!, si estás ahí, manifiéstate, jajaja—? Bueno, y por supuestísimo, muchas gracias. RE: Nuevo control: «Doble Lista» - Shordi - 25-03-2025 En este tipo de controles puedes considerar que el formulario es la verdadera clase, en tanto que la clase exportada es el "interfaz" para manejarlo. Así, la propiedad no ha de ser definida en la clase, sino en el formulario y manejada desde la clase. En el ejemplo que te adjunto verás que en la clase tienes: Código: 'En la declaración ' Por el otro lado en el formulario tienes Código: 'En la declaración' En el formulario fTest he usado un ToggleButton para cambiar de una a otra. El aspecto es este: ![]() He de decir que no me gusta la lógica del boolean para la propiedad. Me parece mucho más coherente y nemotécnico si le asignas un valor numérico de 1 por defecto y de 2 al cambiar. También lo llamaría ListaActiva en lugar de ListaSel. Y por último y sólo por curiosidad: ¿Por qué colocas las listas dentro de dos frames si luego no les pones título (que es para lo que sirven las frames)? Saludos RE: Nuevo control: «Doble Lista» - Grandamakulo - 25-03-2025 Tomo nota de todo y a currar. En cuanto a la pregunta, precisamente dos de las propiedades del control son los títulos de las listas. De esta manera se pueden cambiar desde el código: Código: > Property TituloUno As String ' Título o nombre de la primera lista.' < RE: Nuevo control: «Doble Lista» - Grandamakulo - 26-03-2025 Vale, código actualizado con todas las indicaciones de @Shordi. Creo que podría hacer un control similar con ListView, tal como indica @Shell, pero lo dejo para más delante ![]() ![]() En fin, gracias a ambos. |