Autor |
Mensaje |
tomas
Usuario
Registrado: Febrero 2010
Mensajes: 33
Edad: 57
|
Combobox
Mi problema es hacer funcionar un combo box con la rutina de OFFICE del que vengo y al que no quiero volver.
-Se trata de un combo box con un listado de productos. Al pulsar una tecla me gustaría que me visualizara el primer nombre que empieza por esa letra sin recurrir al evento PopUp o al evento Click (Por rapidez no quiero cambiar teclado a raton o viceversa). Esto lo tengo solucionado mediante un bucle que recorre toda la lista del combo, pero es muy lento( son 6000 productos). ¿Hay algún procedimiento o evento en el propio combobox para localizar por ejemplo, el primer artículo que empiece por la letra C?
|
#1 Jueves, 18 Febrero 2010, 11:46 |
|
|
david
Programador
Registrado: Septiembre 2009
Mensajes: 110
Edad: 47 Ubicación: puerto de santa maria (Cadiz)
|
Re: Combobox
tomas lo mas normal que le hagas una varible y utilizes left right mid lees estos comandos que esto te puede servir para coger las primeras letras
|
#2 Jueves, 18 Febrero 2010, 13:18 |
|
|
tomas
Usuario
Registrado: Febrero 2010
Mensajes: 33
Edad: 57
|
Re: Combobox
?? Supongo que te refieres a utilizar un objeto result para buscar la referencia en la tabla, pero es muy lento. Necesito que me busque en la propia lista del combo box. Si es asi puedes profundizar un poco mas?
|
#3 Jueves, 18 Febrero 2010, 13:36 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Combobox
Tomás, quizás esto te pueda servir:
http://gambasdoc.org/help/comp/gb.qt/combobox/find?es
Pero entiendo que busca por la cadena exacta... puede que combinándolo con LIKE consigas lo que quieres.
http://gambasdoc.org/help/lang/like?es
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#4 Jueves, 18 Febrero 2010, 15:30 |
|
|
alexprox
Usuario
Registrado: Octobre 2009
Mensajes: 27
Edad: 35 Ubicación: venezuela
|
Re: Combobox
eso no es pero algo te puede ayudar bueno http://gambaslinux.wordpress.com/20...e-dos-combobox/ me voy a poner atrabajar en algo parecido pero no aseguro nada
|
#5 Sabado, 20 Febrero 2010, 02:52 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Combobox
Citar: Mi problema es hacer funcionar un combo box con la rutina de OFFICE del que vengo y al que no quiero volver.
-Se trata de un combo box con un listado de productos. Al pulsar una tecla me gustaría que me visualizara el primer nombre que empieza por esa letra sin recurrir al evento PopUp o al evento Click (Por rapidez no quiero cambiar teclado a raton o viceversa). Esto lo tengo solucionado mediante un bucle que recorre toda la lista del combo, pero es muy lento( son 6000 productos). ¿Hay algún procedimiento o evento en el propio combobox para localizar por ejemplo, el primer artículo que empiece por la letra C?
JGuardon te contestó perfectamente y la claúsula like está para eso.
Otra cosa es que meter en un combo una lista de 6000 items es un error de concepto pero es tu aplicación.
|
#6 Sabado, 20 Febrero 2010, 04:24 |
|
|
tomas
Usuario
Registrado: Febrero 2010
Mensajes: 33
Edad: 57
|
Re: Combobox
Citar: Mi problema es hacer funcionar un combo box con la rutina de OFFICE del que vengo y al que no quiero volver.
-Se trata de un combo box con un listado de productos. Al pulsar una tecla me gustaría que me visualizara el primer nombre que empieza por esa letra sin recurrir al evento PopUp o al evento Click (Por rapidez no quiero cambiar teclado a raton o viceversa). Esto lo tengo solucionado mediante un bucle que recorre toda la lista del combo, pero es muy lento( son 6000 productos). ¿Hay algún procedimiento o evento en el propio combobox para localizar por ejemplo, el primer artículo que empiece por la letra C?
JGuardon te contestó perfectamente y la claúsula like está para eso.
Otra cosa es que meter en un combo una lista de 6000 items es un error de concepto pero es tu aplicación.
Ya esta solucionado. El problema no eran los 6000 items sino que a cada tecla pulsada me cargaba el evento save() (el combo forma parte de un tableview) que era lo que me ralentizaba el asunto. ¿ Por que es un error de concepto? Además como puedo utilizar like en la lista de un combo? Combobox.list.find no admite Like, creo.
|
#7 Sabado, 20 Febrero 2010, 20:16 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Combobox
Estoy con soplo. Un combobox no está pensado para soportar todo el peso de una tabla de ese calibre. Es un auxilio a la entrada de datos, no un manejador de tablas eficiente. Supongo, (porque realmente no lo sé) que si además en cada celda de la columna del tableview soportas un array de 6000 items, si tienes diez filas visibles estás cargando 60.000 items en memoria, lo cual no parece, de entrada muy correcto.
Yo soy partidario de que las listas son para leer y los fomularios para entrar datos, salvo en tablas muy pequeñas.. digamos 50 ó 60 filas como mucho, en la que puedes controlar toda la tabla de un vistazo.
Ahora bien esto no es más que una opinión. Como dice soplo, es tu aplicación. Si a tí te vale y funciona así, perfecto. No seré yo quien lo critique...
Saludos
=================== No podemos regresar
|
#8 Sabado, 20 Febrero 2010, 20:24 |
|
|
tomas
Usuario
Registrado: Febrero 2010
Mensajes: 33
Edad: 57
|
Re: Combobox
Estoy con soplo. Un combobox no está pensado para soportar todo el peso de una tabla de ese calibre. Es un auxilio a la entrada de datos, no un manejador de tablas eficiente. Supongo, (porque realmente no lo sé) que si además en cada celda de la columna del tableview soportas un array de 6000 items, si tienes diez filas visibles estás cargando 60.000 items en memoria, lo cual no parece, de entrada muy correcto.
Yo soy partidario de que las listas son para leer y los fomularios para entrar datos, salvo en tablas muy pequeñas.. digamos 50 ó 60 filas como mucho, en la que puedes controlar toda la tabla de un vistazo.
Ahora bien esto no es más que una opinión. Como dice soplo, es tu aplicación. Si a tí te vale y funciona así, perfecto. No seré yo quien lo critique...
Saludos
Por supuesto, y se agradece. Yo pensaba lo mismo, pero desde luego ( ahora que solucioné el problema) funciona mucho mas rapido que un datacombo (que si esta pensado para campos de tablas) y es para mi, mas eficaz que este. Teneis que probarlo y vereis que tampoco es como decis vosotros. De todas formas os agradezco que me echaseis una mano.
Saludos
|
#9 Sabado, 20 Febrero 2010, 21:09 |
|
|
ahtonio
Programador
Registrado: Octobre 2009
Mensajes: 144
Edad: 58 Ubicación: Zaragoza
|
Re: Combobox
Hola, Tomas.
Yo tambien vengo de VBA y hecho de menos eso de la busqueda incremental de los ComboBox, no obstante, sin tocar el control, decirte que si usas un ComboBox de QT y lo pones con la propiedad ReadOnly = True, vas a comprobar que te desplaza automaticamente al primer elemento con esa inicial. Si usas GTK, no funciona (No esta habilitado). Segun leí en un comunicado de Benoit, se habia implementado en QT por requerimiento del IDE, pero no estaba previsto en GTK en este momento.
Respecto a lo de volumen de Items, decir que no es practica recomendada lo de 6000 en un combobox, no obstante el mayor problema creo que se presentara a la hora de cargar y/o añadir Items al combo. Si no hay problema al cargar el formulario y no tienes que hacer actualizaciones al combo (solo para seleccionar el cliente, por ejemplo) es licito hacerlo. Otra cosa es que el usuario se puede quejar de la dificultad de buscar un item particular.
Un saludo
|
#10 Viernes, 05 Marzo 2010, 11:58 |
|
|
|