Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: Jan 2007
Posts: 785
Poder: 12
Angel.Matilla Va por buen camino
Items y AddObject

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?
Responder Con Cita
  #2  
Antiguo 20-04-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: Aug 2007
Ubicación: Barcelona, España
Posts: 1.512
Poder: 14
duilioisola Tiene un aura espectacularduilioisola Tiene un aura espectacular
En Delphi lo puedes saber mediante Assigned(Puntero_a_Objeto);
Lo que hace es compararlo con nil.

Supongo que habrá algo parecido en C.

Código Delphi [-]
Lista.AddObject('Descripcion', Pointer(Objeto));
...
// Verifico si hay asignado un objeto en el item seleccionado
if (Assigned(Lista.Items.Objects[Lista.ItemIndex])) then
Responder Con Cita
  #3  
Antiguo 20-04-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: Jan 2007
Posts: 785
Poder: 12
Angel.Matilla Va por buen camino
Gracias por la respuesta. He estado mirando en la ayuda de Builder y no he visto, o no he sido capaz de localizar, para un ComboBox ningún método Assigned asociado a alguna de su propiedades. En el formulario "relleno" así los TComboBox y en las tablas de la base de datos guardo el valor del objeto, pero a la hora de recuperar el registro de la tabla no se me ocurre como localizar ese objeto.

Vale, podría hacer un bucle for...next hasta encontrarlo; tampoco sería demasiado problema porque tampoco son tantos los registros que van a tener los ComboBox, pero si hubiera un método parecido al IndexOf de un TStringList sería más fácil.
Responder Con Cita
  #4  
Antiguo 20-04-2018
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: Oct 2010
Ubicación: Lima - Peru
Posts: 289
Poder: 9
Caminante Va camino a la fama
Hola

Cita:
Empezado por Angel.Matilla Ver Mensaje
.... no he visto, o no he sido capaz de localizar, para un ComboBox
ningún método Assigned asociado a alguna de su propiedades...
Assigned es una funcion de delphi no esta asociado a ningun control. Pero en tal caso igual te sirve hacer una comparacion con NIL.

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #5  
Antiguo 20-04-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: Jan 2007
Posts: 785
Poder: 12
Angel.Matilla Va por buen camino
Gracias por la aclaración. Entiendo el concepto con el que trabaja esta función per como Assigned no hay nada en Builder; hay AssignedValues (TColumn), AssignedField y AssignedFiedValue (TParam) y AssignedHelPSelector (IHelpSystem).
Responder Con Cita
  #6  
Antiguo 20-04-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.126
Poder: 30
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 20:28:13.
Responder Con Cita
  #7  
Antiguo 21-04-2018
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: Jan 2007
Posts: 785
Poder: 12
Angel.Matilla Va por buen camino
Gracias por las respuestas. Intuía que era algo así, pero no encontraba documentación.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TComboBox.Items.AddObject en Android dison Desarrollo en Delphi para Android 2 13-10-2014 08:38:44
Items de un Listview Miguel89 Varios 3 09-03-2012 22:35:43
No se ven los items de mi Combobox pablopessoa Varios 2 08-06-2010 21:53:30
Items en popupmenu amerika111 Varios 2 04-01-2010 21:42:46
Items Listview Trigger OOP 2 11-10-2004 22:05:02


La franja horaria es GMT +2. Ahora son las 16:53:22.


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