FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Uso del combobox
Buenas... estoy trabajando con delphi 7 y el problema que tengo es que cargo un combobox con strings y valores asociados y luego me retorna cualquier cosa. Para ser más específico lo cargo con:
while not tabla.eof do begin ComboBox.AddItem(tabla.descripcion.value,TObject(tabla.claveprimaria.value)); tabla.next; end; Tanto la descripción como la clave son strings. Luego para recuperar la clave seleccionada uso lo siguiente: variable:=String(ComboBox.Items.Objects[ComboBox.ItemIndex]); Pero me retorna cualquier valor... Me podrían decir qué estoy haciendo mal ???? Mil gracias. |
#2
|
||||
|
||||
La primera pregunta que me hago es ¿Entiendes lo que estás haciendo en ésta línea?
(1) tabla.claveprimaria.value es un variant, no puedes hacer el cast así como así a TObject. (2) Cuando almacenas un TObject, almacenas realmente el puntero al objeto; En éste (si es que eso fuera un TObject correcto), al final tendrías el apuntador al último objeto correcto, pèro los demás apuntarían a "basura", ya que cuando haces un Tabla.Next, no se crean objetos nuevos de tipo TField, sino que se van reaprovechando los mismos... (no se si me explico bien); Es decir, tabla.claveprimaria.value es siempre el mismo elemento que va cambiando de valor. Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Muchas gracias por la prontitud. En principio tenes razon, no entendía el verdadero significado de la linea. Hay alguna forma de utilizar un combobox de esa manera ?
Gracias. |
#4
|
||||
|
||||
Muy parecido a lo que se expone en este otro hilo.
Bueno, mi recomendación sería la misma para este caso, instala el componente TSMDBFilterComboBox y utiliza las propiedades FieldDisplay y FieldValue para recuperar los valores de la lista. Por si acaso pongo nuevamente el enlace para descargar el componente mencionado SMComponents Saludos. |
#5
|
|||
|
|||
Muchas gracias, lei el hilo que me pasaste y me aclaró varias dudas.
|
#6
|
|||
|
|||
Espero te sirva
Podrías hacer por ejemplo:
while not tabla.eof do begin ComboBox.AddItem(tabla.descripcion.value,ComboBox); tabla.next; end; variable:=ComboBox.Items[ComboBox.ItemIndex]; Eso sería una forma de hacer lo que tu quieres hacer |
|
|
|