![]() |
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. |
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:
|
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. |
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. |
Muchas gracias, lei el hilo que me pasaste y me aclaró varias dudas.
|
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 |
La franja horaria es GMT +2. Ahora son las 00:33:38. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi