Page 1 of 1
No ejecutar acción inicio objeto combobox (SOLUCIONADO)
Posted: Mon Dec 07, 2020 10:29 pm
by leandro
Buenas tardes para todos,
Tengo un combobox definido de la siguiente manera:
Code: Select all
@ oBrwAr:nBottom + 1, nW-69 COMBOBOX oCmList VAR nCmList ITEMS aCmList SIZE 44,24 PIXEL OF oP ;
STYLE CBS_DROPDOWNLIST ON CHANGE actArticuloArray()
Pero resulta que al mismo momento que se crea el objeto se ejecuta el on change, lo que necesito es que no se ejecute la acción si no hasta el momento que se haga un cambio después de hacer click.
No se, si me hice entender
De antemano gracias
Re: No ejecutar acción al inicio del objeto combobox
Posted: Tue Dec 08, 2020 10:00 pm
by karinha
Maybe:
Code: Select all
ON CHANGE( IIF( lCondicion, actArticuloArray() ) )
Regards, saludos.
Re: No ejecutar acción al inicio del objeto combobox
Posted: Thu Dec 10, 2020 10:39 pm
by leandro
Amigo gracias por responder, hice la prueba pero no funciona... parece que bloquea el evento ON CHANGE.
Re: No ejecutar acción al inicio del objeto combobox
Posted: Fri Dec 11, 2020 6:46 am
by JESUS MARIN
Buenos dias Leandro.
Acabo de probar el siguiente código y no se ejecuta el ON CHANGE al iniciarse.
Code: Select all
LOCAL oCmList, nCmList, aCmList:={"uno","dos","tres"}
....
@ 50, 10 COMBOBOX oCmList VAR nCmList ITEMS aCmList SIZE 60,240 PIXEL OF oWnd ;
STYLE CBS_DROPDOWNLIST ON CHANGE msgalert("ha cambiado") FONT oFont
¿durante la creación del DIALOGO o VENTANA, estás asignando valores a
nCmList o
aCmList ?
Re: No ejecutar acción al inicio del objeto combobox
Posted: Sun Dec 13, 2020 11:50 am
by leandro
Amigo como vas?
Gracias por responder
Efectivamente durante el inicio del dialogo es que se asignan los valores al COMBOBOX
Re: No ejecutar acción al inicio del objeto combobox
Posted: Mon Dec 14, 2020 6:41 am
by JESUS MARIN
Buenos dias.
Por tanto, en esa asignación, estas cambiando los valores y se ejecuta el ON CHANGE.
Tienes a mi parecer dos posibilidades.
1) ASIGNAR VALORES antes de la creación del objeto COMBO
2) No asignar acción (ON CHANGE) en la creación del COMBO. Crear el codeblock despues de la asignacion de los valores ( por ejemplo en el ON INIT del dialogo o ventana, despues del código actual.
Saludos
Re: No ejecutar acción al inicio del objeto combobox
Posted: Mon Dec 14, 2020 7:30 pm
by leandro
Muchas gracias a todos por responder....
Lo pude solucionar de la forma que propuso karinha, me hacia falta hacer el cambio de la variable
.
Code: Select all
Private lCondicion := .F.
......
@ oBrwAr:nBottom + 1, nW-69 COMBOBOX oCmList VAR nCmList ITEMS aCmList SIZE 44,24 PIXEL OF oP ;
STYLE CBS_DROPDOWNLIST ON CHANGE( IF( lCondicion, navegapaginas(2),))
.......
ACTIVATE WINDOW oWChArti MAXIMIZED ON INIT ( if(len(aArti)!=0,actualizamesarti(aArti[oBrwAr:nArrayAt]),),;
navegapaginas(0),lCondicion:=.T. ) VALID(oBtArt:enable(),.t. )
Re: No ejecutar acción al inicio del objeto combobox
Posted: Wed Dec 16, 2020 12:44 pm
by karinha
leandro wrote:Muchas gracias a todos por responder....
Lo pude solucionar de la forma que propuso karinha, me hacia falta hacer el cambio de la variable
.
Code: Select all
Private lCondicion := .F.
......
@ oBrwAr:nBottom + 1, nW-69 COMBOBOX oCmList VAR nCmList ITEMS aCmList SIZE 44,24 PIXEL OF oP ;
STYLE CBS_DROPDOWNLIST ON CHANGE( IF( lCondicion, navegapaginas(2),))
.......
ACTIVATE WINDOW oWChArti MAXIMIZED ON INIT ( if(len(aArti)!=0,actualizamesarti(aArti[oBrwAr:nArrayAt]),),;
navegapaginas(0),lCondicion:=.T. ) VALID(oBtArt:enable(),.t. )
Muy bien. Yo usaría: STATIC lCondicion := .F.
Saludos.