 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
shackletta Lt JG

Registrado: 01 Dic 2004Mensajes: 68
|
Publicado: Lun 14 Feb, 2005 7:36 pm Asunto: Selección multiple en listbox |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Lun 14 Feb, 2005 10:32 pm Asunto: |
|
|
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 _________________

Ultima edición por Cesar C. Salazar Gonzalez el Lun 14 Feb, 2005 10:36 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Lun 14 Feb, 2005 10:34 pm Asunto: |
|
|
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 |
|
 |
shackletta Lt JG

Registrado: 01 Dic 2004Mensajes: 68
|
Publicado: Mar 15 Feb, 2005 8:22 pm Asunto: |
|
|
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 |
|
 |
shackletta Lt JG

Registrado: 01 Dic 2004Mensajes: 68
|
Publicado: Mar 15 Feb, 2005 8:24 pm Asunto: |
|
|
Ah! lo olvidaba, muchas gracias por vuestras respuestas...  |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|