FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Cargar Combobox Manualmente + un Identificador
Buenas como estan gente? Estoy programando mediante clases y objetos, y tengo una clase que me devuelve una lista de string lista para que yo luego los añada a un combobox o un comboboxEx. Hasta aqui todo bien, corre, ahora tambien deseo asignar un valor/identificador o como gusten llamarlo al item,no para mostrarlo al mismo tiempo sino para q yo lo maneje internamente, por ejemplo:
Código:
ComboBoxEx1->ItemsEx->Add(); ComboBoxEx1->ItemsEx->operator [](0)->Caption = "Juan"; ComboBoxEx1->ItemsEx->operator [](0)->valor/id = 101; // <---------esta demas recalcar que esto es lo q pretendo hacer ComboBoxEx1->ItemsEx->Add(); ComboBoxEx1->ItemsEx->operator [](1)->Caption = "Pedro"; ComboBoxEx1->ItemsEx->operator [](1)->valor/id = 230; PDT: Nunca tengo el delphi a mano asi que disculpen solo tengo c++ en la portatil |
#2
|
||||
|
||||
Hola ginkaku.
Te pongo un ejemplo de como cargar en un TComboBox desde un TDataSet el campo "NOMBRE" de tipo alfanumérico y el campo "ID" de tipo entero. El primer campo se visualiza en el ComboBox y en el evento OnChange de este, se obtiene el valor del campo "ID" correspondiente. Código:
void __fastcall TForm1::FormCreate(TObject *Sender) { DataSet->DisableControls(); DataSet->First(); __try { while (! DataSet->Eof ) { ComboBox1->AddItem(DataSet->FieldByName("NOMBRE")->AsString, (TObject*)DataSet->FieldByName("ID")->AsInteger); DataSet->Next(); } } __finally { DataSet->First(); DataSet->EnableControls(); } } void __fastcall TForm1::ComboBox1Change(TObject *Sender) { int ix = ComboBox1->ItemIndex; String NOMBRE = ComboBox1->Items->Strings[ix]; // NOMBRE String ID = (int)ComboBox1->Items->Objects[ix]; // ID ShowMessage(NOMBRE+" "+ID); // ej: Mostrar }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
Grande ecfisa, no tengo acceso a una dataset directamente en esta clase, pero la logica es la misma. Lo he adecuado perfectamente a mis recursos, muchas gracias funciona de maravilla. |
#4
|
||||
|
||||
Retomo este tema porque no sé que estoy haciendo mal.
Cita:
1ª. La línea de código String ID = (int)ComboBox1->Items->Objects[ix], ¿no da error al tratar de meter un int en un string? 2ª. Yo necesito buscar el valor que viene de una tabla para mostrar el ítem correspondiente. Estoy haciendo esto: Para cargar el ComboBox: Código:
Query->Close(); Query->SQL->Text = "SELECT Etiqueta, Valor, Literal FROM 'Instalacion.db' WHERE Etiqueta = 'Situacion' ORDER BY Valor"; Query->Open(); for (; !Query->Eof; Query->Next()) Situacion->AddItem(Query->FieldByName("Literal")->AsString, (TObject*)Query->FieldByName("Valor")->AsInteger); Código:
for (nItem = 0; nItem < Combo->Items->Count; nItem ++) nPrueba = (int)Combo->Items->Objects[nItem]; |
#5
|
||||
|
||||
Hola Angel.Matilla.
Cita:
Cita:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#6
|
||||
|
||||
Cita:
He probado otra cosa: Código:
for (int nItem = 0; nItem < Combo->Items->Count; nItem ++) { Valor = (long)(TObject*)Combo->Items->Objects[nItem]; if (Valor == Query->FieldByName("Situacion")->AsInteger) { Combo->ItemIndex = nItem; break; } } Código:
AnsiString Cadena; long Valor; for (int i = 0; i < Combo->Items->Count; i++) { Cadena = Combo->Items->Strings[i]; Valor = (long)(TObject*)Combo->Items->Objects[i]; ShowMessage("Cadena:" + Cadena + "\nValor: " + IntToStr(Valor)); } Última edición por Angel.Matilla fecha: 21-12-2013 a las 10:52:24. |
#7
|
||||
|
||||
Hola Angel.Matilla.
Cita:
Ejemplo: Código:
{ ComboBox->ItemIndex = ComboBox->Items->IndexOfObject((TObject*)Query->FieldByName("ID")->AsInteger); }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
||||
|
||||
Muchas gracias por la ayuda. Lo he probado, pero sigue dando el mismo error List index out of bounds (1).
Última edición por Angel.Matilla fecha: 22-12-2013 a las 11:18:25. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cargar nombres de tablas en un ComboBox | Paulao | Varios | 4 | 14-08-2011 01:49:00 |
cargar lista en un combobox o tdblooupcombobox | chalo | Tablas planas | 3 | 27-04-2011 05:10:21 |
Cargar combobox con datos de tabla | loadminds | Tablas planas | 10 | 18-11-2008 19:16:47 |
Como puedo cargar un ComboBox en un Gridview | Shidalis | OOP | 2 | 10-08-2005 14:29:29 |
Cargar Desde Un Combobox | CarmaZone | Conexión con bases de datos | 1 | 15-05-2005 13:00:39 |
|