Aclaración sobre un ComboBox

¿Cómo funciona el combobox en VFP 6.0?
Tengo el siguiente código:
Public Objeto
SCATTER NAME Objeto BLANK
THISFORM.Combo1.CONTROLSOURCE = "Objeto.ID"
THISFORM.Combo1.FORMAT = "KL"
THISFORM.Combo1.INPUTMASK = "999"
THISFORM.Combo1.ROWSOURCETYPE = 3
THISFORM.Combo1.ROWSOURCE = "SELECT DISTINCT ID FROM miTabla INTO CURSOR cTemp"
Tengo las siguientes dudas:
1) Porque el cuadro de texto del combo no funciona como el cuadro de texto de un TextBox. No respeta el controlsource, no respeta el formato, etc.
2)Porque la propiedad Value del combobox me regresa el número de indice de la lista y no el contenido.
3) Porque no modifica la variable Objeto. ID al momento que se escribe en el cuadro de texto del combobox.
Si alguien me puede explicar como funciona en realidad el combobox y como puedo lograr que funcione como un textbox!
Lo tengo configurado como cuadro desplegable

1 respuesta

Respuesta
1
Cuando se selecciona un control ComboBox, se abre y muestra una lista de elementos en la que se puede elegir uno. Un control ComboText combina las características de un control TextBox y un control ListBox. Se puede escribir la información en la parte del cuadro de texto o seleccionar un elemento en la parte de cuadro de lista del control.
Se puede desactivar un elemento en un control ComboBox al colocar una barra inversa (\) antes del elemento. Si el elemento comienza con una barra inversa y no debería desactivarse, agregue una barra inversa más.
La propiedad Style determina el tipo de control ComboBox. Si se establece la propiedad Style como 0, se creará un control ComboBox desplegable. Si se establece la propiedad Style como 2, se creará un cuadro de lista desplegable
Si el ControlSource es una variable de memoria, el valor que elija el usuario en la lista se almacenará en la variable de memoria. Si el ControlSource es un campo de una tabla, el valor se almacenará en el campo, en el puntero de registro. Si un elemento de la lista coincide con el valor del campo de la tabla, se seleccionará el elemento de la lista cuando el puntero de registro se desplace por la tabla.
La propiedad BoundColumn, Determina qué columna de un control ListBox o ComboBox de varias columnas depende de la propiedad Value del control. Está disponible en tiempo de diseño y en tiempo de ejecución.
Sintaxis
Control.BoundColumn[ = nColumna]
Valores
NColumna
Especifica el número del objeto Column que depende de la propiedad Value. El valor predeterminado de nColumna es 1.
Comentarios
Utilice BoundColumn cuando el control ListBox o el ComboBox tenga múltiples columnas y cuando desee almacenar datos en una columna que no sea la primera en la propiedad Value del control.
Saludos, si mi respuesta te sirvió y no hay otra duda.
1) Porque el cuadro de texto del combo no funciona como el cuadro de texto de un TextBox. No respeta el controlsource, no respeta el formato, etc.
Definitivamente el combobox no respetará tus formatos ya que el valor depende del controlsource, además recuerda que los datos son converidos a texto para ser mostrados en el combo. Así que no esperes que funcione como si fuera un textbox ya que no lo es y su nombre lo indica "cuadro combinado", de ahí se debe a que veas la propiedad format e imputmask sin que tengan efecto.
2)Porque la propiedad Value del combobox me regresa el número de indice de la lista y no el contenido.
Porque así se lo indicaste, para que te regrese el valor que deseas debes respetar lo siguiente:
Value (Propiedad)
Especifica el estado actual de un control. Está disponible en tiempo de diseño y en tiempo de ejecución. De sólo lectura para los controles ComboBox y ListBox.
Sintaxis
[Formulario.]Control.Value[ = nValor]
Valores
NValor
Para un control CheckBox, los valores para la propiedad Value son:
Valor Descripción
0 (Predeterminado) Desactivada.
1 Activada.
2 En gris. Esta configuración sólo está disponible en código.
Para los controles CommandGroup, ComboBox, EditBox, ListBox, OptionGroup y Spinner, la configuración para la propiedad Value es la cadena de caracteres o el valor numérico que esté seleccionado en ese momento.
Para un control OptionButton, los valores para la propiedad Value son:
Valor Descripción
0 (Predeterminado) Indica que el botón no está seleccionado.
1 Indica que el botón está seleccionado.
Para un control TextBox, la configuración para la propiedad Value es la cadena de caracteres o el valor numérico, de fecha, de fecha y hora o lógico que esté seleccionado en ese momento. El valor predeterminado es una cadena de caracteres.
Comentarios
Para el control Grid, la propiedad Value sólo estará disponible cuando el control Grid tenga el enfoque.
La propiedad Value de un control CommandGroup u OptionGroup puede usarse para determinar qué botón del grupo causó un evento. Se establece como un entero que indica qué botón del grupo causó el evento.
La propiedad Value cambia su comportamiento cuando se establece un control de origen para un control. Cuando se establece un control de origen, el valor de la propiedad Value de un control es el tipo de datos de la variable o campo mencionado por la propiedad ControlSource. Si el tipo de datos no es válido para el control, Visual FoxPro generará un error.
A continuación se muestra una lista de tipos de datos válidos:
Control Tipos de datos permitidos
CheckBox Integer, Logical, Numeric
ComboBox Character, Integer, Numeric
CommandGroup Character, Integer, Numeric
EditBox Character, Memo
Grid Character, Numeric
ListBox Character, Integer, Numeric
OptionButton Integer, Logical, Numeric
OptionGroup Character, Integer, Numeric
Spinner Currency, Integer, Numeric
TextBox Cualquier tipo de datos
3) Porque no modifica la variable Objeto. ID al momento que se escribe en el cuadro de texto del combobox.
Definitivamente el valor que digitas debe existir en la lista ya que no anexa o modifica valores. Únicamente selecciona, el combo por definición es para buscar no para editar, pero si quisieras hacerlo te invito a que profundices en el combo y veas que es posible programarle lo que quieras, pero debes de programar ya que no traé nada automático que lo haga.
Saludos, si es todo por favor no olvides finalizar tu pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas