gambafeliz   25-03-2021, 11:49
#1
Hola,

Alguien se le ocurre la manera de esconder parte del texto de cada fila de un ComboBox o un ListBox, pero, ojo, debe poderse esconder algo que uno quiera por ejemplo:

Filas:
Esconder el ID
1 Fútbol
2 Baloncesto
3 Tenis

Después debe poderse recuperar por cada fila el ID

Gracias.
Shell   27-03-2021, 13:06
#2
Hola GambaFeliz.

A ver. Esto va con respecto al tema que también buscas para la base de datos.
¿ Estas interesado en saber si la propiedad ItemData que tenía el listBox de Visual Basic existe en Gambas ?

Como tu sabes en el ListBox o el ComboBox solo vemos un texto. No hay más de una columna en una fila.

En el listbox de Visual Basic existía la propiedad List es un array que guarda texto y ItemData era un array interno
que usaba números, indices.

Por ahora no le he encontrado una necesidad de existencia de ItemData en el listBox de Gambas.
Estoy liado con un "viejo" ejemplo de Visual Basic convirtiendolo a Gambas, espero subirlo cuando lo acabe y comentas.
Pero me quiero asegurar de que esa propiedad tenga algo de interés.

[Imagen: truq4H9.png]


Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
gambafeliz   27-03-2021, 22:53
#3
Gracias Shell pero que apañao eres Smile

El control de Microsoft Access hace esto:

Enlaza con dos campos (columnas) de una base de datos relacional. En cada fila, la columna una era el ID de la tabla y era oculto y la segunda columna era el campo visible para el usuario. Esto era muy muy útil para desarrollar combobox relacionales como un Combobox de Categorías y otro de Subcategorías.

Ahora bien,
Mira yo actualmente lo resuelvo en Gambas, así, te cuento:

1. Cargo un combobox con el campo visible y un String[] con las filas y en su interior con las columnas
2. Cuando el usuario selecciona un elemento del combobox solo tengo que obtener la Key de la fila y después relaciono esta Key con la posición en el String[]
3. Una vez echo esto obtengo cuantas columnas necesite conocer de la base de datos y así hago un Combobox en un Combobox relacional.

Espero que te interese mi explicación sino pues, bueno Smile

Oye muchas gracias de verdad por tu buen hacer sabes que te lo agradezco de verdad.
Shell   31-03-2021, 14:52
#4
Me acuerdo del tema de M$ Acess, lo que pasa es que hace ya tanto tiempo.
 
(27-03-2021, 22:53)gambafeliz escribió: Espero que te interese mi explicación sino pues, bueno

Claro que me interesa y mucho, todo lo que sea aprender para mejorar la programación es de mi interés y el de todos, aunque no siempre
se pueda estar. La vida es complicada.

La explicación es la misma que estoy usando en ese ejemplo. Lo tomo como referencia. Podemos aplicarlo al ejemplo que estoy haciendo.
(27-03-2021, 22:53)gambafeliz escribió: 1. Cargo un combobox con el campo visible y un String[] con las filas y en su interior con las columnas

El campo visible en el ListBox es el ISBN que es la clave. El String[] almacena cada fila (registro de los libros), los campos son las columnas (ISBN, Públicado por..). Hasta ahí ok.

Estamos hablando de un array estático, que se da por sentado cuantos registros puede tener y sus campos.

Código:
Private Const NumRegistros As Integer = 100
Private Matriz_de_Datos As New String[NumRegistros, 4] 'Tenemos 100 registros y 4 campos
 
Cita:2. Cuando el usuario selecciona un elemento del combobox solo tengo que obtener la Key de la fila y después relaciono esta Key con la posición en el String[]

Solo es cuestión de buscar en cada uno de los registros
 
Cita:3. Una vez echo esto obtengo cuantas columnas necesite conocer de la base de datos y así hago un Combobox en un Combobox relacional.

Así es.

No he necesitado la propiedad similar ItemData los ListBox o ComboBox de Visual Basic. Pero me gustaría ver si e realmente necesaria.

Al final lo conseguiste.

Saludos
Última modificación: 31-03-2021, 14:52 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.