Page 1 of 1

Activar/Desactivar control radio

Posted: Sun Feb 04, 2024 5:34 pm
by JoseAlvarez
Saludos a todos, esperando se encuentren muy bien.

Tengo un control RADIO de tres opciones, de las cuales necesito activar/desactivar dos de ellas
segun una condicion. Me explico: tengo el siguiente dialogo:

Image

En la parte inferior, estan las 3 opciones del control radio.
Las dos primeras deben activarse cuando el segundo browse (color verde) tenga alguna fila de datos y desactivarse la tercera.
Cuando el segundo browse no tenga datos, deben desativarse las dos primeras y solo estar activa la tercera opcion. es decir:

Segundo browse con datos = opciones 1 y 2 ENABLE() , tercera opcion DISABLE()
Segundo browse sin datos = opciones 1 y 2 DISABLE() , tercera opcion ENABLE()

Agradezco desde ya, la ayuda...

Re: Activar/Desactivar control radio

Posted: Mon Feb 05, 2024 12:11 am
by FranciscoA
José, mira si te es util.

Code: Select all | Expand

//---------------------------------------//
// RADIO DESHABILITADO SEGUN CONDICION
//---------------------------------------//
Function RadioEnabDisab()
   local oDlg, oBrw1, oBrw2, oRadio, nRadio := 1
   local aData := {} 

   USE STATES NEW

   DEFINE DIALOG oDlg FROM 0,0 TO 500, 640 PIXEL TRUEPIXEL ;
      TITLE "RADIO ENABLE/DISABLE SEGUN DATOS EN oBrw2"

   //Browse Fuente
   @ 20, 20 XBROWSE oBrw1 SIZE 300,-120 PIXEL OF oDlg ;
      DATASOURCE "STATES" ;
      COLUMNS "Code","Name" ;
      COLSIZES 60,180 ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw1 
      :bLDblClick  := { || aadd(aData, {oBrw1:Code:Value,oBrw1:Name:Value}), oBrw2:Refresh(), RadEnabDisab(oRadio,oBrw2) } 
      :CreateFromCode()
   END

   //Browse Destino
   @ 20,320 XBROWSE oBrw2 SIZE 300,-120 PIXEL OF oDlg ;
      DATASOURCE aData ; 
      COLUMNS 1,2 ;
      HEADERS "CODIGO", "NOMBRE" ;
      COLSIZES 60,180 ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw2
      :bKeyDown    := { |nKey| if(nKey == VK_DELETE, (ASize(aData,0), oBrw2:Refresh(), RadEnabDisab(oRadio,oBrw2)),) } 
      :CreateFromCode()
   END

   @.1,1 Say "Doble Click en Browse 1 para agregar a Browse 2, o tecla Delete en Browse 2 para limpiarlo" of oDlg 
   @ oDlg:nHeight-90,240 RADIO oRadio VAR nRadio OF oDlg ;
            ITEMS "Opcion 1","Opcion 2","Opcion 3";
            _3D SIZE 150, 25  PIXEL 

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT ( oBrw1:SetSize((oDlg:nWidth/2)-30, oDlg:nHeight-20) ,;
                oBrw2:SetSize(oBrw1:nWidth, oBrw1:nHeight) ,;
                oBrw1:Move(oDlg:nTop+20,oDlg:nLeft+20) ,;
                oBrw2:Move(oDlg:nTop+20,oBrw1:nWidth+40) ,;
                RadEnabDisab(oRadio,oBrw2) )
        
   STATES->(DBCLOSEAREA())
return nil

//-------------------------------------------//
Function RadEnabDisab(oRadio,oBrw2)
   if oBrw2:nLen == 0
      oRadio:aItems[1]:Disable()
      oRadio:aItems[2]:Disable()
      oRadio:aItems[3]:Enable()   ;   oRadio:aItems[3]:SetFocus()
   else
      oRadio:aItems[1]:Enable()   ;   oRadio:aItems[1]:SetFocus()
      oRadio:aItems[2]:Enable()
      oRadio:aItems[3]:Disable() 
   endif
Return nil
 
Saludos.

Re: Activar/Desactivar control radio

Posted: Mon Feb 05, 2024 12:50 pm
by JoseAlvarez
Francisco,

Muchísimas gracias!

Funcionando perfecto!

Saludos!

Re: Activar/Desactivar control radio

Posted: Mon Feb 05, 2024 1:43 pm
by karinha
Gracias FranciscoA, Very good!

Regards, saludos.

Re: Activar/Desactivar control radio

Posted: Mon Feb 05, 2024 3:07 pm
by FranciscoA
José, Karinha:

Encantado de colaborar.

Saludos.