Page 1 of 1
COMBOBOX - VALOR INICIAL
Posted: Tue Jan 05, 2021 4:54 pm
by SALINETAS24
Hola a todos,
Una curiosidad que me lleva por un mal querer.
Adjunto un ".zip" que reproduce un "extraño" resultado.
Cuando iniciamos el programa el campo se muestra vacio " " , no hay nada seleccionado.
Cuando se selecciona un valor se muestra correctamente.
Pero como podemos inicializar el valor a vacio " ".
Ya no es posible, siempre tiene un valor.
Muchas gracias por la atención prestada...
Re: COMBOBOX - VALOR INICIAL
Posted: Tue Jan 05, 2021 5:39 pm
by JALMAG
Hola, no entiendo lo que deseas, que siempre muestre vacío según dices textualmente: "Pero como podemos inicializar el valor a vacío " ".

" simplemente lo dejes como está ahora bien si lo que deseas es que te muestre el primer valor quita la propiedad VALUE
Si lo que quieres es que se posicione en el hipotético valor guardado VALUE deberá obtener la posición en el archivo del valor guardado.
Re: COMBOBOX - VALOR INICIAL
Posted: Tue Jan 05, 2021 6:13 pm
by SALINETAS24
JALMAG wrote: ↑Tue Jan 05, 2021 5:39 pm
Hola, no entiendo lo que deseas, que siempre muestre vacío según dices textualmente: "Pero como podemos inicializar el valor a vacío " ".

" simplemente lo dejes como está ahora bien si lo que deseas es que te muestre el primer valor quita la propiedad VALUE
Si lo que quieres es que se posicione en el hipotético valor guardado VALUE deberá obtener la posición en el archivo del valor guardado.
Hola JALMAG,
Es que no se como explicarlo, Imaginate un mantenimiento de una DBF de clientes, tienes en la pantalla un grid y vas pasando por los registros de una DBF y a la vez muestras los campos para poder modificarlos.., si uno de ellos es un COMBOBOX, mientras este en blanco se mostrará en blanco, pero si lee alguno con valor, los que ya no tienen valor asumirán este último cuando vuelvas sobre ellos.
Un tonteria, que se arregla poniendo un registro "1 - SINDEFINIR", pero queria ver si era posible inicializarlo tal y como se muestra al principio.
Gracias por constestar.
Re: COMBOBOX - VALOR INICIAL
Posted: Tue Jan 05, 2021 6:25 pm
by franco
I use a the same idea for returning information from a combo or list box. So if you want to return nothing I have a blank record in table.
I tried it in yours.
Just add a blank record then .
CHANGE MENUITEM 'Inicializa' ACTION gt()
ADD
function gt
go top
Form_1.Combo_1.Value := recno()
return
Re: COMBOBOX - VALOR INICIAL
Posted: Tue Jan 05, 2021 10:42 pm
by JALMAG
Hola compañero, puedes poner el primer campo de la tabla como campo vacío en la descripción o en su código según sea el campo a visualizar.
Igualmente lo que dice Franco está igualmente bien, es lo mismo de otra forma.
Lamentablemente no hay otra forma a no ser que en vez de leer la tabla directamente en el combo hagas un array de la tabla y el combo muestre el array, en este caso si no está dirigido a un elemento del array creo que te lo mostrará en blanco.
Saludos
Re: COMBOBOX - VALOR INICIAL
Posted: Tue Jan 05, 2021 10:43 pm
by edk
SALINETAS24 wrote: ↑Tue Jan 05, 2021 4:54 pm
Hola a todos,
Una curiosidad que me lleva por un mal querer.
Adjunto un ".zip" que reproduce un "extraño" resultado.
Cuando iniciamos el programa el campo se muestra vacio " " , no hay nada seleccionado.
Cuando se selecciona un valor se muestra correctamente.
Pero como podemos inicializar el valor a vacio " ".
Ya no es posible, siempre tiene un valor.
Muchas gracias por la atención prestada...
Aquí está mi sugerencia:
Code: Select all
#Include "hmg.ch"
#include "common.ch"
* When ITEMSOURCE property is set to a fieldname, 'Value' property
* uses the physical record number.
* If you set the VALUESOURCE property to a fieldname, its containt is
* returned instead the physical record number.
Function Main()
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 365 ;
HEIGHT 120 ;
TITLE "Exemplos ComboBox New" ;
MAIN ;
NOMAXIMIZE ;
NOSIZE ;
ON INIT OpenTables() ;
ON RELEASE CloseTables()
DEFINE MAIN MENU
DEFINE POPUP '&Test'
MENUITEM 'Get Value' ACTION MsgInfo( Form_1.Combo_1.Value )
MENUITEM 'Set Value' ACTION Form_1.Combo_1.Value := 2
MENUITEM 'Refresh' ACTION Form_1.Combo_1.Refresh
MENUITEM 'Inicializa' ACTION ComboSetCursel ( Form_1.Combo_1.Handle , 0 )
END POPUP
END MENU
@010,010 COMBOBOX Combo_1 ;
ITEMSOURCE CIDADES->DESCRICAO ;
VALUE 0 ;
WIDTH 200 ;
FONT "Arial" SIZE 9 ;
TOOLTIP "Combo Cidades"
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
Procedure Opentables()
Use Cidades Alias Cidades New
Index On Descricao To Cidades1
Return
Procedure CloseTables()
Use
Return
Nota adicional: esta solución no activa el evento OnChange

Re: COMBOBOX - VALOR INICIAL
Posted: Wed Jan 06, 2021 12:08 am
by franco
Edk,
Works perfect on menu item.
Still nice to have blank record to pick from drop down.
Re: COMBOBOX - VALOR INICIAL
Posted: Wed Jan 06, 2021 7:10 pm
by SALINETAS24
edk wrote: ↑Tue Jan 05, 2021 10:43 pm
Aquí está mi sugerencia:
.... /....
Magnifica sugerencia, es justo lo que buscaba. Buen regalo de Reyes, yo pongo la cervecita fresquita.
Un abrazo virtual