Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Question 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 
       }
Gracias.
Responder Con Cita
  #2  
Antiguo 30-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
  #3  
Antiguo 30-05-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
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;
      }

}
Lo he pegado,Te juro que sigue Haciendo lo mismo:

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
Responder Con Cita
  #4  
Antiguo 30-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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;
Pero no deja de funcionar por su falta.

Última edición por escafandra fecha: 26-06-2008 a las 00:26:23.
Responder Con Cita
  #5  
Antiguo 31-05-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
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.

Responder Con Cita
  #6  
Antiguo 31-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
  #7  
Antiguo 31-05-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Bueno, no existe ningún bug. He hecho una prueba con delphi 6:

Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
begin
    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;
    end;

end.



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;
}
Aquí te dejo el ejemplo:

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.
Responder Con Cita
  #8  
Antiguo 01-06-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Smile

!!!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.
Responder Con Cita
  #9  
Antiguo 02-06-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 02-06-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita
  #11  
Antiguo 03-06-2008
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Poder: 18
NEG1414 Va por buen camino
Gracias has dado otra vez con la solucion.

Gracia otra vez.

"La ignorancia es una enfermedad que se cura preguntando"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 21:47:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi