Combobox no Cambia

Post Reply
User avatar
JoseAlvarez
Posts: 201
Joined: Sun Nov 09, 2014 5:01 pm

Combobox no Cambia

Post by JoseAlvarez »

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
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..."
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Combobox no Cambia

Post by karinha »

Muestre algo asi...

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. )
 
Saludos.
João Santos - São Paulo - Brasil
User avatar
JoseAlvarez
Posts: 201
Joined: Sun Nov 09, 2014 5:01 pm

Re: Combobox no Cambia

Post by JoseAlvarez »

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.
"Los errores en programación, siempre están entre la silla y el teclado..."
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Combobox no Cambia

Post by cmsoft »

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?
User avatar
JoseAlvarez
Posts: 201
Joined: Sun Nov 09, 2014 5:01 pm

Re: Combobox no Cambia

Post by JoseAlvarez »

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.,
"Los errores en programación, siempre están entre la silla y el teclado..."
User avatar
JoseAlvarez
Posts: 201
Joined: Sun Nov 09, 2014 5:01 pm

Re: Combobox no Cambia

Post by JoseAlvarez »

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
"Los errores en programación, siempre están entre la silla y el teclado..."
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Combobox no Cambia

Post by cmsoft »

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
Incluso, dentro del mismo combo2 luego de seleccionar cualquier otro valor, vuelvo al primero, la accion se ejecuta.
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.

Prueba intentando también ejecutar la accion cuando el combo pierde el foco

Code: Select all

oCbxColores:bLostFocus := {||  Fnct_ChangeColores ()}
 
Espero que te sea de utilidad
User avatar
JoseAlvarez
Posts: 201
Joined: Sun Nov 09, 2014 5:01 pm

Re: Combobox no Cambia

Post by JoseAlvarez »

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... :(
"Los errores en programación, siempre están entre la silla y el teclado..."
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Combobox no Cambia

Post by cmsoft »

Me alegro que lo hayas podido resolver!
Saludos
Post Reply