Ver Mensaje Individual
  #6  
Antiguo 20-04-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por Angel.Matilla Ver Mensaje
Estoy usando este código:
Código:
for (; Query->Eof; Query->Next())
     ComboBox1->Items->AddObject(Query->Fields->FieldByNumber(1)->AsString, (TObject *)Query->Fields->FieldByNumber(2)->AsInteger);
para asociar valores a los elementos de un ComboBox. Me surge una duda: ¿Cómo se puede saber si un ComboBox tiene asociado un objeto?
La propiedad Objects deriva de TCustomCombo (de tipo TStrings) y no posee un contador por lo que, para saber si el combo tiene asociado algún objeto, necesitas comprobar cada uno de los Items como te sugiere duilioisola.

Dos opciones similares:
Código PHP:
// (podrías retornar un int si deseas saber cuantos objetos hay)
bool ComboHaveObjects(TComboBoxCB)
{
  for (
int i 0CB->Items->Counti++)
    if (
CB->Items->Objects[i])
      return 
true;
  return 
false;
}

// Ejemplo de uso:
 
if (ComboHaveObjects(ComboBox1))
    
ShowMessage("ComboBox1 tiene objetos asociados");
  else
    
ShowMessage("ComboBox1 no tiene objetos asociado"); 
Código PHP:
class TComboBoxHack:public TComboBox
{
public:
  
bool haveObjects(void);
};

bool TComboBoxHack::haveObjects(void)
{
  for (
int i 0Items->Counti++)
    if ( 
Items->Objects[i] )
      return 
true;

  return 
false;
}

// Ejemplo de uso:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 if (!(
static_cast<TComboBoxHack*>(ComboBox1))->haveObjects())
   
ShowMessage("ComboBox1 no tiene un objeto asociado");
 else
   
ShowMessage("ComboBox1 tiene objetos asociados");

Ahora, si cada Item si o si tendrá un objeto asociado, y deseas saber si no tiene ninguno mas simple es:
Código PHP:
  if (ComboBox1->Items->Count == 
    
ShowMessage("ComboBox1 no tiene objetos asociados"); // obviamente...

  // si el combo se vacía (Clear) antes de su carga, también es válido:
  
if (Query->IsEmpty())
    
ShowMessage("ComboBox1 no tiene objetos asociados"); 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 20-04-2018 a las 19:28:13.
Responder Con Cita