Saludos a Todos, amigos foristas.
Nuevamente acudo a Uds. en busca de ayuda.
Tengo esta situacion usando dos Combobox dentro de un TFolderEx
en el primer combo, al seleccionar cualquier elemento, se ejecuta bien el On Change... esa es la idea. Aqui no hay problema.
no asi el segundo combo, el cual ejecuta On Change SOLO cuando selecciono del segundo valor del array en adelante...
Me explico de otra manera..
valores del primer combo aArray1:= { "Var1_1", "Var1_2", "Var1_3" )
valores del segundo combo aArray2:= { "Var2_1", "Var2_2", "Var2_3" )
al seleccionar en el combo uno, bien sea "Var1_1" , "Var1_2" o "Var1_3" se ejecuta ON CHANGE. Todo Bien
al seleccionar en el combo dos , el primer elemento, en este caso "Var2_1" NO se ejecuta ON CHANGE, puedo seleccionarlo mil veces y no ocurre nada
mientras que si selecciono "Var2_2", "Var2_3" ON CHANGE se ejecuta perfectamente...
Redefine ComboBox oCbxPresenta Var cCbxPresenta items aArreglo_Presenta Id 4001 of oFolder:aDialogs[2] on Change ( Fnct_ChangePresenta() )
Redefine ComboBox oCbxColores Var cCbxColor items aArreglo_Colores Id 4002 of oFolder:aDialogs[2] on Change ( Fnct_ChangeColores () )
de hecho, haciendo la siguiente prueba,
Redefine ComboBox oCbxPresenta Var cCbxPresenta items aArreglo_Presenta Id 4001 of oFolder:aDialogs[2] on Change (msginfo('Hola 1') ,Fnct_ChangePresenta() )
Redefine ComboBox oCbxColores Var cCbxColor items aArreglo_Colores Id 4002 of oFolder:aDialogs[2] on Change ( msginfo('Hola 2') , Fnct_ChangeColores() )
Puedo Ver HOLA 1 siempre, pero HOLA DOS solo cuando seleccione un elemento diferente al primero.
Una vez seleccionado cualquier elemento del 2do en adelante, SI se ejecuta el on change al seleccionar el primero.
ambos combos se crean desde recursos .RC con Pelles C. tienen exactamente las mismas propiedades.
Los Valores Iniciales de las variables de Captura de los combos , (cCbxPresenta y cCbxColor), tienen al inicio el valor de "Agregar" que NO esta dentro de los arreglos.
Sin embargo, el primero funciona, el segundo no.
Los combos Son estilo DropDown
Alguna idea de que puede estar pasando?
Fw17.01, PellesC, xHarbour, Borland 5.5
Combobox no Cambia
- JoseAlvarez
- Posts: 201
- Joined: Sun Nov 09, 2014 5:01 pm
Combobox no Cambia
Last edited by JoseAlvarez on Wed Nov 18, 2020 10:57 pm, edited 1 time in total.
"Los errores en programación, siempre están entre la silla y el teclado..."
Re: Combobox no Cambia
Muestre algo asi...
Saludos.
Code: Select all
FUNCTION Main()
LOCAL ARRITEM := { "ICMS 00 - Tributada Integralmente", ;
"ICMS 10 - Tributada com cobrança do ICMS por substituicao tributaria", ;
"ICMS 20 - Com reducao da base de calculo", ;
"ICMS 30 - Isenta ou nao tributada e com cobranca do ICMS por substituicao tributaria", ;
"ICMS 40 - Isenta", ;
"ICMS 41 - Não tributada", ;
"ICMS 50 - Suspensao", ;
"ICMS 51 - Diferimento", ;
"ICMS 60 - Cobrado anteriormente por substituicao tributaria", ;
"ICMS 70 - Com reducao da base de calculo e cobranca do ICMS por substituicao tributaria", ;
"ICMS 00 - Outras" }
LOCAL ARRITEM3 := { "Margem Valor Agregado", ;
"Pauta (valor)", ;
"Preço Tabelado Max. (valor)", ;
"Valor da Operacao" }
REDEFINE COMBOBOX MOSTRA01 VAR VARPROTB[1] ID 19 ITEMS ARRITEM OF oDlg ;
WHEN ( OPCAO = "I" .OR. OPCAO = "A" )
REDEFINE COMBOBOX MOSTRA03 VAR VARPROTB[3] ID 27 ITEMS ARRITEM3 OF oDlg ;
WHEN ( ( OPCAO = "I" .OR. OPCAO = "A" ) .AND. ;
( VARPROTB[1] = ARRITEM[1] .OR. VARPROTB[1] = ARRITEM[2] .OR. ;
VARPROTB[1] = ARRITEM[3] .OR. VARPROTB[1] = ARRITEM[10] .OR. ;
VARPROTB[1] = ARRITEM[11] ) )
REDEFINE COMBOBOX oCombo1 VAR _Combo1 ITEMS cItemC1 ID 100 OF oDlg ;
COLOR AZUL , FundoGet UPDATE
oCombo1:bChange := {|| Valida_Combo1() }
oTipoVenda:bKeyDown := {|nKey| iif( nKey = VK_RETURN, Valida_Combo1(), ) }
REDEFINE COMBOBOX oCombo2 VAR _Combo2 ITEMS cItemC2 ID 100 OF oDlg ;
COLOR AZUL , FundoGet UPDATE
RETURN NIL
STATIC FUNCTION Valida_Combo1()
IF( codição )
cItemC2 := { "jjj", "kkk" }
OItemC2:Enable()
ELSE
cItemC2 := { '' }
cItemC2 := Disable()
ENDIF
oCombo2:SetItems( cItemC2 )
_Combo2 := cItemC2[1]
oCombo2:Refresh()
RETURN( .T. )
STATIC FUNCTION Valida_Combo1()
IF( codição )
cStaC2 := { "xxx", "zzz" }
OstaC2:Enable()
ENDIF
Ostarec:SetItems( cStaRec )
_starec := cStaRec[1]
oStaRec:Refresh()
RETURN( .T. )
João Santos - São Paulo - Brasil
- JoseAlvarez
- Posts: 201
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Combobox no Cambia
Hola Karanha, saludos
Creo entender en tu codigo, que los combox estan relacionados.. en mi caso no, el primer combo no tiene nada que ver con el comportamiento del segundo, ni el segundo con el primero.. son totalmente individuales.. no estan ralacionados.
Creo entender en tu codigo, que los combox estan relacionados.. en mi caso no, el primer combo no tiene nada que ver con el comportamiento del segundo, ni el segundo con el primero.. son totalmente individuales.. no estan ralacionados.
"Los errores en programación, siempre están entre la silla y el teclado..."
Re: Combobox no Cambia
Jose, como inicializas las variables cCbxPresenta y cCbxColor?
Cuando pones en el combo 2 la opcion 2, luego pasas a el combo 1, y luego vuelves al combo 2 y cambias a opcion 1 no te ejecuta la accion?
Cuando pones en el combo 2 la opcion 2, luego pasas a el combo 1, y luego vuelves al combo 2 y cambias a opcion 1 no te ejecuta la accion?
- JoseAlvarez
- Posts: 201
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Combobox no Cambia
Hola Cesar... saludos.
las inicializo asi:
cCbxPresenta:='Agregar'
cCbxColor :='Agregar'
incluso he tratado con :
cCbxPresenta:=pad('Agregar',xx)
cCbxColor :=pad('Agregar',xx)
para igualar los tamaños.
La situacion es esta:
Ambos combos trabajan de manera totalmente indivivual. Ninguno tiene que ver con el otro. Solo hago referencia al combo 1 para indicar que con este todo esta bien, pero con el segundo que esta construido exactamente igual que el 1, no funciona el on change cuando inicialmente selecciono el primer valor.
Me explico.
Si en el combo2 selecciono el primer valor, no se ejecuta la accion.
Si selecciono cualquier valor diferente al primero, se ejecuta.
Incluso, dentro del mismo combo2 luego de seleccionar cualquier otro valor, vuelvo al primero, la accion se ejecuta.
Es decir, Nunca se ejecuta ON CHANGE cuando "combo2 + valor 1" se realiza como primera accion sobre el objeto.
Luego que selecciono un valor no sea el primero, todo funciona bien.. incluso con el primer valor del combobox
Espero haberme explicado bien, si no es asi, dime y trato de plantearlo de otra manera mas explicita.,
las inicializo asi:
cCbxPresenta:='Agregar'
cCbxColor :='Agregar'
incluso he tratado con :
cCbxPresenta:=pad('Agregar',xx)
cCbxColor :=pad('Agregar',xx)
para igualar los tamaños.
La situacion es esta:
Ambos combos trabajan de manera totalmente indivivual. Ninguno tiene que ver con el otro. Solo hago referencia al combo 1 para indicar que con este todo esta bien, pero con el segundo que esta construido exactamente igual que el 1, no funciona el on change cuando inicialmente selecciono el primer valor.
Me explico.
Si en el combo2 selecciono el primer valor, no se ejecuta la accion.
Si selecciono cualquier valor diferente al primero, se ejecuta.
Incluso, dentro del mismo combo2 luego de seleccionar cualquier otro valor, vuelvo al primero, la accion se ejecuta.
Es decir, Nunca se ejecuta ON CHANGE cuando "combo2 + valor 1" se realiza como primera accion sobre el objeto.
Luego que selecciono un valor no sea el primero, todo funciona bien.. incluso con el primer valor del combobox
Espero haberme explicado bien, si no es asi, dime y trato de plantearlo de otra manera mas explicita.,
"Los errores en programación, siempre están entre la silla y el teclado..."
- JoseAlvarez
- Posts: 201
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Combobox no Cambia
Aca dejo un video donde se explica mejor.
Como dije, el problema es en el segundo combo, el primero funciona perfecto y no tiene nada que ver ni hacer con el segundo, solo lo menciono para mostrar que trabaja bien y que asi deberia funcionar el segundo.
http://www.datanet.space/fw/error.webm
Como dije, el problema es en el segundo combo, el primero funciona perfecto y no tiene nada que ver ni hacer con el segundo, solo lo menciono para mostrar que trabaja bien y que asi deberia funcionar el segundo.
http://www.datanet.space/fw/error.webm
"Los errores en programación, siempre están entre la silla y el teclado..."
Re: Combobox no Cambia
Hola José:
Según lo que entiendo, cuando en el combo dos tenes una opcion seleccionada distinta de la 1, y lo cambias a la opcion 1, ahi si te ejecuta la accion
Prueba intentando también ejecutar la accion cuando el combo pierde el foco
Espero que te sea de utilidad
Según lo que entiendo, cuando en el combo dos tenes una opcion seleccionada distinta de la 1, y lo cambias a la opcion 1, ahi si te ejecuta la accion
Si es así, podría ser que el onchange no se ejecute porque al iniciar el dialogo tome como valor el primero de la lista.Incluso, dentro del mismo combo2 luego de seleccionar cualquier otro valor, vuelvo al primero, la accion se ejecuta.
Prueba intentando también ejecutar la accion cuando el combo pierde el foco
Code: Select all
oCbxColores:bLostFocus := {|| Fnct_ChangeColores ()}
- JoseAlvarez
- Posts: 201
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Combobox no Cambia
hola cesar.. gracias de nuevo por tu auyda
Probe con el bLostFocus, igual falla, la accion se ejecuta dos veces.
Por lo pronto resolvi de una manera la cual no queria aplicar, pero es la unica hasta el momento.
inclui dentro del arreglo el elemento "agregar" y listo. Funciono.
pero por logica "Agregar" aparece como opcion dentro de la lista desplegada por el combo. Eso Lo solucione con un return .f. en caso de que el usuario lo seleccione.
Aun no veo que tengo de diferente entre el combo1 que funciona perfecto y el dos que falla... siendo el dos una copia exacta del uno...
Probe con el bLostFocus, igual falla, la accion se ejecuta dos veces.
Por lo pronto resolvi de una manera la cual no queria aplicar, pero es la unica hasta el momento.
inclui dentro del arreglo el elemento "agregar" y listo. Funciono.
pero por logica "Agregar" aparece como opcion dentro de la lista desplegada por el combo. Eso Lo solucione con un return .f. en caso de que el usuario lo seleccione.
Aun no veo que tengo de diferente entre el combo1 que funciona perfecto y el dos que falla... siendo el dos una copia exacta del uno...
"Los errores en programación, siempre están entre la silla y el teclado..."
Re: Combobox no Cambia
Me alegro que lo hayas podido resolver!
Saludos
Saludos