Hola.
Cita:
Empezado por Angel.Matilla
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(TComboBox* CB)
{
for (int i = 0; i < CB->Items->Count; i++)
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 = 0; i < Items->Count; i++)
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 == 0 )
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