Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Buscar un TObject en un ComboBox (https://www.clubdelphi.com/foros/showthread.php?t=93300)

Angel.Matilla 26-07-2018 14:31:59

Buscar un TObject en un ComboBox
 
Buenas. Vuelvo a la carga con los ComboBox y el método AddObject. Ya en otro hilo pregunté, y al final me salió bien, como localizar un objeto cargado con un int en un ComboBox con este código:
Código PHP:

ComboBox1->ItemIndex ComboBox1->Items->IndexOfObject((TObject*)fMenu->Query->FieldByName("Zona")->AsInteger); 

Ahora tengo otro problema. Tengo otro ComboBox en el que el AddObject se hace con un AnsiString, lo que hago gracias al código que me pusisteis en Uso de TObject en un TStringList, pero ahora no sé como hacer para encontrar ese valor que he cargado a partir del resultado de un query. He probado esto:
Código PHP:

Clase = new TClase;
Clase->Cadena fMenu->Query->FieldByName("Pais")->AsString;
ComboBox2->ItemIndex ComboBox2->Items->IndexOfObject((TObject*)Clase); 

pero me devuelve siempre -1 y por lo tanto no muestra nada. Y el campo que quiero buscar sí devuelve información.

ecfisa 26-07-2018 20:42:51

Hola.

Es que la nueva instancia creada para la búsqueda, no es igual a la buscada (aunque coincida el atributo Cadena), revisa si te sirve de este modo:
Código PHP:

int searchStrOnObj(TComboBox *CB, const AnsiString str)
{
  
int i;
  
AnsiString s "";

  for ( 
0!= str && CB->Items->Counti++ )
    
= ((TClase*)CB->Items->Objects[i])->Cadena;

  return 
i-1;


Ejemplo de uso:
Código PHP:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
int inx searchStrOnObj(ComboBox1Query->FieldByName("Pais")->AsString);
  
TClase *cl reinterpret_cast<TClase*>(ComboBox1->Items->Objects[inx]);

  
ShowMessage(ComboBox1->Items->Strings[inx]+"\n"+cl->Cadena);


Saludos :)

Angel.Matilla 27-07-2018 11:16:16

¡Perfecto! Muchísimas gracias.


La franja horaria es GMT +2. Ahora son las 14:33:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi