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 

combobox con multiselec

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: combobox con multiselec Responder citando

hola a todos.

he buscado de todas las formas que se me ocurre por si alguna vez en el foro se pudo dar algo como lo que aparece en la siguiente imagen






alguien sabe como lograr este efecto?
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Código:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
   ComboBox1->Style = csOwnerDrawFixed;
}
 
void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,
   TRect &Rect, TOwnerDrawState State)
{
   TComboBox *cbx = static_cast<TComboBox>(Control);
 
   cbx->Canvas->FillRect(Rect);
   TRect R = Classes::Rect(Rect.Left + 1, Rect.Top, Rect.Left + 13,
       Rect.Bottom);
   int isSelected = (int)(cbx->Items->Objects[Index]);
 
   if (!State.Contains(odSelected) && isSelected)
   {
       DrawFrameControl(cbx->Canvas->Handle, &R, DFC_BUTTON,
           DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_FLAT);
   }
   else if (State.Contains(odFocused) && isSelected)
   {
       DrawFrameControl(cbx->Canvas->Handle, &R, DFC_BUTTON,
           DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_FLAT);
   }
   else if (isSelected)
   {
       DrawFrameControl(cbx->Canvas->Handle, &R, DFC_BUTTON,
           DFCS_BUTTONCHECK | DFCS_CHECKED | DFCS_FLAT);
   }
   else if (!isSelected)
   {
       DrawFrameControl(cbx->Canvas->Handle, &R, DFC_BUTTON,
           DFCS_BUTTONCHECK | DFCS_FLAT);
   }
   cbx->Canvas->TextOut(Rect.Left + 15, Rect.Top, cbx->Items->Strings[Index]);
 
}
// ---------------------------------------------------------------------------
 
void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
   TComboBox *cbx = static_cast<TComboBox>(Sender);
   String Sel = "";
   int isSelected = (int)(cbx->Items->Objects[cbx->ItemIndex]);
   cbx->Items->Objects[cbx->ItemIndex] = (TObject*)(isSelected ? 0 : 1);
   for (int i = 0; i <cbx>Items->Count; i++)
   {
       if ((int)(cbx->Items->Objects[i]))
           Sel += cbx->Items->Strings[i] + " ";
   }
   ShowMessage(Sel); // Just for test...
}


Más detalles: http://cbuilder.ru/index.php?PHPSESSID=f0418f5d223e75b1bdeab4d03b137fef&topic=9343.0;wap2
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: con esto puedo ir probando Responder citando

Gracias.

ahora veré si puedo dar con el estilo que tiene el componente de c#.net.

la elegancia de desplegar la lista, poder seleccionar uno o varios items sin que se pierda el despliegue y que , si tengo más de un item seleccionado salga como texto "multiseleccion" es muy util, veamos si puedo lograrlo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
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.