Ver Mensaje Individual
  #4  
Antiguo 20-12-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Reputación: 21
Angel.Matilla Va por buen camino
Retomo este tema porque no sé que estoy haciendo mal.
Cita:
Empezado por ecfisa Ver Mensaje

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
}
Hay dos cosas que no acabo de entender.
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);
Para "leer" el contenido:
Código:
for (nItem = 0; nItem < Combo->Items->Count; nItem ++)
     nPrueba = (int)Combo->Items->Objects[nItem];
pero al correr el programa de da un mensaje List index out of bounds (1). Interpreto que trata de ir más allá del último índice cargado en el ComboBox, pero lo cierto es que tiene seis elementos y esto pasa con nItem = 1. ¿Alguna idea?
Responder Con Cita