Refesco

Refesco

Postby Mike Serra » Thu Aug 09, 2007 9:07 am

Buenos días foro:

Tengo en un dialogo desde resursos (Microsoft C++) con un combobox y 2 checks, los checks tienen que estar activados solo cuando se haya seleccionado un valor específico del combo, con el resto de valores tienen que estar desactivados. Por defecto, cuando se activa el dialogo, los check estan activados porque el valor del combo es que el lo activa, pues cuando selecciono un valor que los deviera de desactivar, no se refresca los checks y siguen activos. Solo se desactivan cuando vuelve a coger el foco el combo o cuando pincho sobre cualquiera de los 2 checks. He probado con sysrefres, refrescando los checks en el ON CHANGE del combo, ¿sabeis de que puede ser?

Code: Select all  Expand view
redefine combobox oCombo var vCombo items aCombo id 801 of oDlg STYLE CBS_DROPDOWN ON CHANGE (ocheck1:refresh(),ocheck2:refresh())

ocombo:blostfocus:={||ocheck1:refresh(),ocheck2:refresh()}

redefine checkbox ocheck1 var porprecio id 702 of odlg when  objeto:lPuedoModificar .and. alltrim(vCombo)="NO ADJUDICADA" on change (Desactiva(ocheck2,@porconstructora),sysrefresh()) UPDATE

redefine checkbox ocheck2 var porconstructora id 703 of odlg when  objeto:lPuedoModificar .and. alltrim(vCombo)="NO ADJUDICADA" on change (Desactiva(ocheck1,@porprecio),sysrefresh()) UPDATE


Muchas Gracias.
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Postby Antonio Linares » Thu Aug 09, 2007 10:38 am

Mike,

Hazlo así:
Code: Select all  Expand view
redefine combobox oCombo var vCombo items aCombo id 801 of oDlg STYLE CBS_DROPDOWN ON CHANGE If( objeto:lPuedoModificar .and. alltrim(vCombo)="NO ADJUDICADA", ( ocheck1:Enable(), ocheck2:Enable() ), ( ocheck1:Disable(), ocheck2:Disable() ) )

redefine checkbox ocheck1 var porprecio id 702 of odlg when  objeto:lPuedoModificar .and. alltrim(vCombo)="NO ADJUDICADA" on change (Desactiva(ocheck2,@porconstructora),sysrefresh()) UPDATE

redefine checkbox ocheck2 var porconstructora id 703 of odlg when  objeto:lPuedoModificar .and. alltrim(vCombo)="NO ADJUDICADA" on change (Desactiva(ocheck1,@porprecio),sysrefresh()) UPDATE
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41948
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Mike Serra » Fri Aug 10, 2007 7:18 am

Perfecto Antonio!! :D

No se por que sería, pero MUCHAS GRACIAS
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Postby Antonio Linares » Fri Aug 10, 2007 7:25 am

Mike,

Las claúsulas WHEN se evaluan cuando algun control pierde el foco.

En tu caso, estas cambiando la selección del combobox, pero no estás perdiendo su foco, por eso los WHEN no se evalúan.

Con el cambio propuesto ahora tu realizas la misma acción que los WHEN cuando cambia la selección del combobox y no tienes que aguardar a que se cambie el foco.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41948
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Mike Serra » Fri Aug 10, 2007 8:17 am

La explicación, perfecta, sólo comentarte que en mi ejemplo cuando seleccionaba un valor en el combobox y luego pulsaba intro, ahí si se debería de ejecutar la clausula WHEN, porque si que me saltaba a otro objeto. De todas formas te agradezco enormemente tus soluciones y explicaciones ya que me harán pensar.

UN SALUDO,
Mike Serra
 
Posts: 297
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Postby Antonio Linares » Fri Aug 10, 2007 9:05 am

Mike,

Por favor, prueba tu código original con sólo este cambio:

redefine combobox oCombo var vCombo items aCombo id 801 of oDlg STYLE CBS_DROPDOWN ON CHANGE (ocheck1:refresh(),ocheck2:refresh()) VALID ( oDlg:AEvalWhen(), .T. )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41948
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 12 guests