 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Sab 04 May, 2019 6:02 pm Asunto: combobox con multiselec |
|
|
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 |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Sab 11 May, 2019 1:38 am Asunto: |
|
|
| 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 |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Lun 13 May, 2019 5:31 am Asunto: con esto puedo ir probando |
|
|
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 |
|
 |
|
|
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.
|