Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Selección multiple en listbox

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Selección multiple en listbox Responder citando

Ya he buscado sobre esto en el foro pero no encuentro la respuesta a lo que necesito, vereis tengo un listbox cuya lista de items viene de una consulta hecha a una BD, el usuario debe elegir uno o varios de esos items y luego con eso crearé uno o varios nuevos registros en otra de las tablas de la BD.

Yo había pensado en hacer dentro del evento OnKeyDown del listbox la selección múltiple, cuando la tecla pulsada fuera CONTROL, pero no sé cómo hacerlo. Cuando detecto que está pulsada la tecla control ¿cómo puedo acceder a cada item del listbox y saber si está seleccionado o no?

La pregunta es, ¿voy bien encaminada o tengo que hacerlo en otro tipo de evento del listbox?, ¿me podríais indicar cómo hacerlo??

Gracias...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Intenta de esta manera dentro del Evento KeyDown, del ListBox, al presiona las teclas shift o Ctrl, se presenta en el caption del Form, los elementos que estan seleccionados, pruebalo funciona como tu quieres

Código:
void __fastcall TForm1::ListBox1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if(Shift.Contains(ssShift) || Shift.Contains(ssCtrl) )
    {
        AnsiString Items_Seleccionados;
        for(int i=0;i<this->ListBox1->Count;i++)
        {
            // verificamos si esta seleccionado
            if(this->ListBox1->Selected[i])
            {
                Items_Seleccionados += this->ListBox1->Items->Strings[i]+" ";
            }
        }
        // los puse, en el caption del form
        // por que nose que hagas con ellos
        // te muestra los items, que estan
        // seleccionados, jeje
        this->Caption = Items_Seleccionados;
    }
}
//---------------------------------------------------------------------------


Recuerda ponerla propiedad MultiSelect a true
_________________
Cool


Ultima edición por Cesar C. Salazar Gonzalez el Lun 14 Feb, 2005 10:36 pm, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Primero pon la propiedad Multiselect del TListBox a True, y luego puedes utilizar un bucle para recorrerlo y comprobar durante el recorrido están los items están seleccionados o no:
Código:

for (int i=0;i<ListBox1->Items->Count;i++){
      if (ListBox1->Selected[i]){
         ListBox2->Items->Add(ListBox1->Items->Strings[i]);
      }
    }

En este ejemplo en concreto si el item se encuentra seleccionado lo traslada a un segundo TListBox. Saludos
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Perdón, pero cometí una equivocación, resulta que puse que utilizaba listbox cuando en realidad utilizo TDBListBox, no sé si tendrá mucha importancia eso...

Por otra parte, cuando ejecuto la aplicación intento seleccionar algún item del listbox pero no lo marca, es decir no se ve en la pantalla que esté seleccionado, sin embargo recorriendo los items del DBListbox como me habeis indicado,veo que sí están seleccionados ¿a qué puede deberse esto?, ¿qué es lo que debería hacer y no estoy haciendo o no lo estoy haciendo correctamente?
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Ah! lo olvidaba, muchas gracias por vuestras respuestas... Laughing
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.