FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con ListBox
Buenas:
Dentro de un Listbox cuyos elementos estan ordenados alfabeticamente al pulsar una tecla alfanumerica el item que me selecciona es siempre el segundo del grupo de items que empiezen por la tecla pulsada..nunca el primero (a mi os aseguro que me pasa) . Alguien sabe porque y como puedo hacer que la posicion sea el primeros del grupo de items que empiezen por la tecla pulsada. Código:
TStringList *Lista = New TStringList Lista->Add("A") Lista->Add("AB") Lista->Add("AC") Lista->Add("B") Lista->Add("BA") Lista->Add("C") ... Lista->Sorted; for (int i=0;i<Lista->Count;i++) { ListBox1 ->Items->Text = Lista->Text } |
#2
|
||||
|
||||
NEG1414 He probado tu código como lo posteaste, añadiendo algún punto y coma... No me pasa lo que dices, me funciona correctamente y como debería. A cada pulsación de la tecla, el selecionado avanza un lugar en la lista.
Saludos. |
#3
|
|||
|
|||
En primer lugar gracias por atenderme.
Al leer tu respuesta he optado por probar el codigo en otro PC el codigo que he puesto es el siguiente: Código:
void __fastcall TForm1::FormActivate(TObject *Sender) { TStringList *Lista = new TStringList; Lista->Add("A"); Lista->Add("AB"); Lista->Add("AC"); Lista->Add("B"); Lista->Add("BA"); Lista->Add("C"); Lista->Sorted=true; for (int i=0;i<Lista->Count;i++) { ListBox1 ->Items->Text = Lista->Text; } } Pulso la tecla A: salta a AB Pulso la tecla B: salta a BA (quiero que salte a B) Pulso la tecla c : Salta a C Pulso la tecla a : Salta a AB (quiero que salte a A) NOTA: DONDE HAS INCLUIDO EL CODIGO?. Gracias otra vez |
#4
|
||||
|
||||
Pues ese mismo código que propones es lo que yo he probado. Sólo con una diferencia, lo coloqué en el evento de un botón y Listbox1 es simplemente un TListBox incluido en el formulario principal Form1.
Ya te digo, me funciona como esperaba que lo hiciese. Saludos. EDITO: Lo he probado en el evento OnActivate y también me funciona. Te dejo como lo he hecho Archivo Adjunto 1268. Añado una linea más: Código:
delete Lista; Última edición por escafandra fecha: 26-06-2008 a las 00:26:23. |
#5
|
|||
|
|||
Gracias por seguir conmigo..
He intentado poner a funcionar tu codigo pero me han surgido dos problemas 1: Mi version de builder es la 6 2: al intentar compilar no encuentra el paquete donde esta el archivo Mios.bpi (he buscado el archivo y no lo tengo en el pc) No he podido ejecutarlo.... La diferencia de version y la ausencia del archivo Mios.bpi puede tener algo que ver. Gracias otra vez. |
#6
|
||||
|
||||
Bueno, Mios.bpi es una librería de compomentes que he ido creando yo mismo y que tengo colocado por defecto en mis proyectos. Realmente no hace falta para el ejemplo que te envié. Eliminala en las opciones de proyecto / Packages /design packages y de la opcion build with runtime packages. Elimina tambien todas las librerías que yo pueda tener instaladas y que tu no tengas. De esa forma lo podrás compilar.
Sobre la pregunta de si tiene que ver Builder 6, pues no lo se. En El BC5 he tenido que corregir un bug de la clase fstream... De todas formas las mismas clases VCL las usa delhi y están muy testadas. ¿Estamos ante un nuevo bug? Seria bueno que lo comprobaras y que otros miembros lo hicieran también. Si es así, se puede modificar el código fuente de la clase TListBox y publicarlo como truco o corrección de bug. ¿El ejecutable que te puse funciona? Aquí te dejo el proyecto linkado de forma estática para que funcione aunque falten librerías en tu PC. Informamé. Saludos. |
#7
|
||||
|
||||
Bueno, no existe ningún bug. He hecho una prueba con delphi 6:
si no colocas ListBox1.Sorted := true; funciona como tu dices. En definitiva tu codigo c tiene algún error y ademas falta ListBox1->Sorted = true; Sería algo así: Código:
void __fastcall TForm1::FormActivate(TObject *Sender) { ListBox1->Items->Add("A"); ListBox1->Items->Add("AB"); ListBox1->Items->Add("AC"); ListBox1->Items->Add("B"); ListBox1->Items->Add("BA"); ListBox1->Items->Add("C"); ListBox1->Sorted=true; } Saludos. EDITO: mira esto también: Código:
void __fastcall TForm1::FormActivate(TObject *Sender) { TStringList *Lista = new TStringList; Lista->Add("A"); Lista->Add("AB"); Lista->Add("AC"); Lista->Add("B"); Lista->Add("BA"); Lista->Add("C"); Lista->Sorted = true; ListBox1->Items->Text = Lista->Text; // Prueba con esta línea y sin ella: ListBox1->Sorted = true; delete Lista; } Última edición por escafandra fecha: 31-05-2008 a las 22:17:27. |
#8
|
|||
|
|||
!!!PERFECTO!!!
Has dado con el problema, una vez añadida esa linea el programa funciona perfectamente. Muchas Garcias.. Postdata: He puesto esta cuestion en 5 foros Builder y has sido el unico que has contestado. |
#9
|
|||
|
|||
Otra vez yo... Tengo oto problema:
Cuando ejecuto el codigo me muestra el listbox correctamente pero si quiero seleccionar un elemento de listbox (item) con el raton no puedo Es normal...Se puede seleccionar un item con el raton? Gracias |
#10
|
||||
|
||||
Coloca la propiedad TabStop del ListBox en el Object Inspector a false.
Date cuenta que aquí también puedes poner el valor deSorted a true o false. Saludos. |
#11
|
|||
|
|||
Gracias has dado otra vez con la solucion.
Gracia otra vez. "La ignorancia es una enfermedad que se cura preguntando" |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problemas para deseleccionar un elemento de un listbox | neon | OOP | 5 | 19-08-2011 16:00:18 |
agregar y/o eliminar items de un listbox a partir de otro listbox | Goyo | PHP | 2 | 27-09-2007 16:46:30 |
Problemas con ListBox | CFPA86 | Varios | 6 | 10-09-2007 16:53:13 |
uso del listbox | majosf | Conexión con bases de datos | 3 | 25-07-2005 10:59:25 |
Problemas al cargar el contenido de un fichero en un ListBox | Delphos | Varios | 4 | 02-02-2004 13:02:07 |
|