FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Consulta sobre GROUP
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Consulta sobre GROUP
Posted: Mon Sep 16, 2013 05:10 AM
Por favor si alguien pudiera ayudarme

Estoy poniendo en un dialogo dos grupos el primera contiene 2 radios y el segundo tres
Selecciono un radio del primer grupo y cuando quiero seleccionar uno del segundo grupo, el radio del primer grupo se desactiva
Este es mi codigo :
Code (fw): Select all Collapse
# include "fivewin.ch"

STATIC nRad1, nRad2, cId_Art, cId_Pro, cId_Sol, cNomArt, cNomPro, cNomSol

FUNCTION RepDet()
    LOCAL oDlg := NIL,;
         aoObjetos := { nil, nil }, ;
         aoBtn := { nil, nil, nil },;
         aoSay := { nil, nil }
    LOCAL aoGrp := { nil, nil }         
   LOCAL aoRad := { nil, nil }
    LOCAL cTitulo := "Reporte detalle partidas de importaciones"
    
    cId_Art := space(18)
    cId_Pro := cId_Sol := space(5)
    cNomArt := cNomPro := cNomSol := ""
    nRad1 := 1
    nRad2 := 1
   
   dbCloseAll()

   IF ! Net_Use( "imp",,, oApp:xDatos ) .or.;           // Importaciones
    ! Net_Use( "pro",,, oApp:xDatos ) .or.;         // Ordenes de proveedores
    ! Net_Use( "ven",,, oApp:xDatos ) .or.;         // Catalogo de vendedores
    ! net_use( "art",,, oApp:xDatos ) .or.;         // Catalogo de articulos
    ! net_use( "dimp",,,oApp:xDatos )                   // Detalle de importaciones
      dbCloseAll(); RETURN(NIL)
   ENDIF
   
   DEFINE DIALOG oDlg RESOURCE "DLG_REP_DET" TITLE cTitulo
   
   REDEFINE RADIO aoRad[1] VAR nRad1                ID 201,202 OF oDlg UPDATE
   
   REDEFINE GROUP aoGrp[1] PROMPT "Seleccione"  ID 4003 OF oDlg UPDATE
   
   REDEFINE RADIO aoRad[2] VAR nRad2                ID 203,204,205 OF oDlg UPDATE
   
   REDEFINE GROUP aoGrp[2] PROMPT "Seleccione"  ID 4007 OF oDlg UPDATE
                     
   IF nRad1 == 1
    
    
    IF nRad2 == 1
        REDEFINE SAY aoSay[1] PROMPT "Articulo :"       ID 101 OF oDlg UPDATE
        
        REDEFINE GET aoObjetos[2] VAR cId_Art           ID 102 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Art := ValCod( cId_Art, "art" ), ;
                                    iif(empty(cId_Art), .F., ;
                                       (cId_Art := art->id, cNomArt := art->nombre, oDlg:Update(), .t.)) } ) ;
                MESSAGE "Clave del articulo"
                aoObjetos[2]:cToolTip := "Introduzca o seleccione la clave del articulo"
                
            REDEFINE SAY aoSay[2] VAR cNomArt               ID 301 OF oDlg UPDATE
        ENDIF               
    
    IF nRad2 == 2
        REDEFINE SAY aoSay[1] PROMPT "Proveedor :"  ID 101 OF oDlg UPDATE
        
        REDEFINE GET aoObjetos[2] VAR cId_Pro           ID 102 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Pro := ValCod( cId_Pro, "pro" ), ;
                                    iif(empty(cId_Pro), .F., ;
                                       (cId_Pro := pro->id, cNomPro := pro->nombre, oDlg:Update(), .t.)) } ) ;
                MESSAGE "Clave de proveedor"
                aoObjetos[2]:cToolTip := "Introduzca o seleccione la clave de proveedor"    
    
            REDEFINE SAY aoSay[2] VAR cNomPro               ID 301 OF oDlg UPDATE               
        ENDIF
                            
        IF nRad2 == 3
            REDEFINE SAY aoSay[1] PROMPT "Vendedor :"       ID 101 OF oDlg UPDATE ;
        
        REDEFINE GET aoObjetos[2] VAR cId_Sol           ID 102 OF oDlg UPDATE ;
            PICTURE "@!" ;
                VALID EVAL ( { || cId_Sol := ValCod( cId_Sol, "ven" ), ;
                                    iif(empty(cId_Sol), .F., ;
                                        (cId_Sol := ven->id, cNomSol := ven->nombre, oDlg:Update(), .t.)) } ) ;
            MESSAGE "Clave de vendedor"
                aoObjetos[2]:cToolTip := "Introduzca o seleccione la clave de vendedor"
                
            REDEFINE SAY aoSay[2] VAR cNomSol               ID 301 OF oDlg UPDATE               
            
        ENDIF
        
    ENDIF
    
    REDEFINE BUTTONBMP aoBtn[1] ID 400 OF oDlg ;
    PROMPT "A&ceptar " ;
    BITMAP "BTN_OK" TEXTRIGHT ;
    ACTION oDlg:End() ;     //( Filtra(), ImpRep(), oDlg:End() ) ;
      MESSAGE "Aceptar" UPDATE
      aoBtn[1]:cToolTip := "Presione para Continuar"

    REDEFINE BUTTONBMP aoBtn[2] ID 401 OF oDlg ;
        PROMPT "&Cancelar " BITMAP "BTN_CAN" TEXTRIGHT ;
    ACTION oDlg:End() ;     //( lContinuar := .F., oDlg:End() ) ;
      MESSAGE "Cancelar" UPDATE
      aoBtn[2]:cToolTip := "Presione para Cancelar"

   ACTIVATE DIALOG oDlg CENTERED ON INIT oninit( oDlg )
   
RETURN NIL

// --------------------------------------------------------------------------- //


y esta es una imagen del dialogo


De antemano muchas gracias
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Re: Consulta sobre GROUP
Posted: Mon Sep 16, 2013 05:15 AM
Disculpen, todavia no se muy bien como poner una imagen

Lo vuelvo a intentar
http://www.mediafire.com/download/707bar94c8nmkf3/Captura.JPG
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 211
Joined: Wed Jul 16, 2008 12:59 PM
Re: Consulta sobre GROUP
Posted: Mon Sep 16, 2013 02:26 PM
Hola Juan:

Proba con con habilitar el atributo Group al primer radio de cada grupo.

Esto lo deberias hacer en tu editor de recursos.



Atentamente,

Rolando
Cochabamba - Bolivia
FWH 1109 - xHarbour 1.1.0 (SimpLex) - BCC58
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Re: Consulta sobre GROUP
Posted: Mon Sep 16, 2013 04:42 PM

Rolando

Gracias por responder

Ya lo hice y sin embargo no me actualiza el valor de nRad2, se supone que si elijo en el primer grupo el primer radio (selectivo) y en el segundo grupo el segundo o el tercer radio, siempre me considera el primer radio (articulo)

Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 46
Joined: Tue May 07, 2013 07:27 PM
Re: Consulta sobre GROUP
Posted: Mon Sep 16, 2013 05:45 PM

Hola Juan

A mi me ha ocurrido lo mismo y es por el editor de recursos, si usas pelles debes colocar en el tipo que es un radiobutton y no auto radiobutton

Saludos Pedro

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Consulta sobre GROUP
Posted: Mon Sep 16, 2013 10:37 PM

Juan:

Al contrario de Héctor, yo los tengo definidos como AUTO RADIOBUTTON desde PellesC y sin problemas,
sería bueno que publicaras tus recursos.

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Re: Consulta sobre GROUP
Posted: Tue Sep 17, 2013 12:08 AM

Hector, Armando

Ya probe con cambiar el atributo de los radios a auto radiobutton y no funciona

Mis radios del primer grupo son "selectivo" y "General"
los del segundo grupo son "Articulo", "Proveedor" y "Vendedor"
abajo tengo un get que se activa solamente si selecciono el primer radio del grupo uno "Selectivo" y me funcionen los if-endif ; pero al parecer el valor de nRad2 siempre me queda en 1
Estoy pensando que me hace falta algo como un CHANGE para actualizar el valor de nRAd2, pero no se como implementarlo

Saludos

Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Consulta sobre GROUP
Posted: Tue Sep 17, 2013 01:31 AM
Juan:

Viendo tu imagen creo comprender tus necesidades, a ver si esto te funciona:

El segundo RADIO condiciónalo solo cuando el primer RADIO valga 1 (Selectivo)
y el GET lo condicionas solo cuando el segundo RADIO valga 3 (Vendedor)

Creo que ya no necesitas los IFs.

Code (fw): Select all Collapse
          REDEFINE RADIO aoRad[2] VAR nRad2 ID 203,204,205 OF oDlg UPDATE;
          WHEN nRad1 == 1     // AQUÍ
          ...
          ...
          ...
        REDEFINE GET aoObjetos[2] VAR cId_Sol           ID 102 OF oDlg UPDATE ;
            WHEN nRad2 == 3;          // Y AQUÍ
            PICTURE "@!" ;
                VALID EVAL ( { || cId_Sol := ValCod( cId_Sol, "ven" ), ;
                                    iif(empty(cId_Sol), .F., ;
                                        (cId_Sol := ven->id, cNomSol := ven->nombre, oDlg:Update(), .t.)) } ) ;
            MESSAGE "Clave de vendedor"


Ojalá que esto te ayude.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Re: Consulta sobre GROUP
Posted: Sun Sep 22, 2013 03:50 AM
Armando

Disculpa por la tardanza

Juan:

Viendo tu imagen creo comprender tus necesidades, a ver si esto te funciona:

El segundo RADIO condiciónalo solo cuando el primer RADIO valga 1 (Selectivo)
y el GET lo condicionas solo cuando el segundo RADIO valga 3 (Vendedor)

Creo que ya no necesitas los IFs.


Sucede que el prompt del say va a cambiar en base al valor que tenga nRad2 y que nRad1 sea 1
Si nRAd1 = 1 y nRad2 = 1, el prompt del say sera "Articulo"
Si nRAd1 = 1 y nRad2 = 2, el prompt del say sera "Proveedor"
Si nRad1 = 1 y nRad2 = 3, el prompt del say sera "Vendedor"
y abrira las bases de datos que correspondan segun el valor de nRad2

Si nRad1 = 2, (General) el get no se activara

Cuando salgo del dialogo y pruebo los valores de nRad1 y nRad2 los muestra correctos

No se a que se deba

Gracias
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Consulta sobre GROUP
Posted: Sun Sep 22, 2013 08:48 AM

Juan,

El problema es que no puedes hacer unos IFs en función de algo que valdrá x a posteriori.

Usa la claúsula ON CHANGE para cambiar el texto del SAY, etc.

REDEFINE RADIO ... ON CHANGE If( nRad1 == 1, oSay:SetText( { "Artículo", "Proveedor", "Vendedor" }[ nRad2 ] ),)

Como ves, llamamos a If() despues de que se seleccione otro elemento del radio

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Consulta sobre GROUP
Posted: Sun Sep 22, 2013 09:03 AM

Y para el GET:

REDEGINE GET ... WHEN nRad1 != 2

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Re: Consulta sobre GROUP
Posted: Sun Sep 22, 2013 06:40 PM
Antonio

Gracias por responder

Este es el nuevo codigo
Code (fw): Select all Collapse
# include "fivewin.ch"

STATIC nRad1, nRad2, nOpcion, cId_Art, cId_Pro, cId_Sol, cNomArt, cNomPro, cNomSol

FUNCTION RepDet()
    LOCAL oDlg := NIL,;
         aoObjetos := { nil, nil }, ;
         aoBtn := { nil, nil, nil },;
         aoSay := { nil, nil }
    LOCAL aoGrp := { nil, nil }         
   LOCAL aoRad := { nil, nil }
    LOCAL cTitulo := "Reporte detalle partidas de importaciones"
    
    cId_Art := space(18)
    cId_Pro := cId_Sol := space(5)
    cNomArt := cNomPro := cNomSol := ""
    nRad1 := 1
    nRad2 := 1
   
   dbCloseAll()

   IF ! Net_Use( "imp",,, oApp:xDatos ) .or.;           // Importaciones
    ! Net_Use( "pro",,, oApp:xDatos ) .or.;         // Ordenes de proveedores
    ! Net_Use( "ven",,, oApp:xDatos ) .or.;         // Catalogo de vendedores
    ! net_use( "art",,, oApp:xDatos ) .or.;         // Catalogo de articulos
    ! net_use( "dimp",,,oApp:xDatos )                   // Detalle de importaciones
      dbCloseAll(); RETURN(NIL)
   ENDIF
   
   DEFINE DIALOG oDlg RESOURCE "DLG_REP_DET" TITLE cTitulo TRANSPARENT
   
   REDEFINE RADIO aoRad[1] VAR nRad1                ID 201,202 OF oDlg UPDATE ;
    ON CHANGE If( nRad1 == 1, aoSay[1]:SetText( { "Artículo", "Proveedor", "Vendedor" }[ nRad2 ] ), )

   REDEFINE GROUP aoGrp[1] PROMPT "Seleccione"  ID 4003 OF oDlg UPDATE
    
   REDEFINE RADIO aoRad[2] VAR nRad2                ID 203,204,205 OF oDlg UPDATE ;
    ON CHANGE If( nRad1 == 1, aoSay[1]:SetText( { "Artículo", "Proveedor", "Vendedor" }[ nRad2 ] ), )
    
   REDEFINE GROUP aoGrp[2] PROMPT "Seleccione"  ID 4007 OF oDlg UPDATE
   
   
   if nRad2 == 3
    ? nRad2
    REDEFINE SAY aoSay[1] PROMPT "Vendedor :"       ID 101 OF oDlg UPDATE
    
    REDEFINE GET aoObjetos[2] VAR cId_Sol           ID 102 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Sol := ValCod( cId_Sol, "ven" ), ;
                                iif(empty(cId_Sol), .F., ;
                                    (cId_Sol := ven->id, cNomSol := ven->nombre, oDlg:Update(), .t.)) } ) ;
        MESSAGE "Clave de vendedor" ;
        WHEN nRad1 != 2
            aoObjetos[2]:cToolTip := "Introduzca o seleccione la clave de vendedor"
        
        REDEFINE SAY aoSay[2] VAR cNomSol               ID 301 OF oDlg UPDATE
        
   elseif nRad2 == 2
    ? nRad2
    REDEFINE SAY aoSay[1] PROMPT "Proveedor :"  ID 101 OF oDlg UPDATE
        
    REDEFINE GET aoObjetos[2] VAR cId_Pro           ID 102 OF oDlg UPDATE ;
        PICTURE "@!" ;
        VALID EVAL ( { || cId_Pro := ValCod( cId_Pro, "pro" ), ;
                                iif(empty(cId_Pro), .F., ;
                                   (cId_Pro := pro->id, cNomPro := pro->nombre, oDlg:Update(), .t.)) } ) ;
            MESSAGE "Clave de proveedor" ;
            WHEN nRad1 != 2 
            aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave de proveedor"
            
        REDEFINE SAY aoSay[2] VAR cNomPro               ID 301 OF oDlg UPDATE                                   
        
   elseif nRad2 == 1
    ? nRad2
    REDEFINE SAY aoSay[1] PROMPT "Articulo :"       ID 101 OF oDlg UPDATE
        
    REDEFINE GET aoObjetos[2] VAR cId_Art           ID 102 OF oDlg UPDATE ;
        PICTURE "@!" ;
        VALID EVAL ( { || cId_Art := ValCod( cId_Art, "art" ), ;
                                iif(empty(cId_Art), .F., ;
                                   (cId_Art := art->id, cNomArt := art->nombre, oDlg:Update(), .t.)) } ) ;
            MESSAGE "Clave del articulo" ;
            WHEN nRad1 != 2
            aoObjetos[2]:cToolTip := "Introduzca o seleccione la clave del articulo"
                
        REDEFINE SAY aoSay[2] VAR cNomArt               ID 301 OF oDlg UPDATE
   
   endif
    
    REDEFINE BUTTONBMP aoBtn[1] ID 400 OF oDlg ;
    PROMPT "A&ceptar " ;
    BITMAP "BTN_OK" TEXTRIGHT ;
    ACTION oDlg:End() ;     //( Filtra(), ImpRep(), oDlg:End() ) ;
      MESSAGE "Aceptar" UPDATE
      aoBtn[1]:cToolTip := "Presione para Continuar"

    REDEFINE BUTTONBMP aoBtn[2] ID 401 OF oDlg ;
        PROMPT "&Cancelar " BITMAP "BTN_CAN" TEXTRIGHT ;
    ACTION oDlg:End() ;     //( lContinuar := .F., oDlg:End() ) ;
      MESSAGE "Cancelar" UPDATE
      aoBtn[2]:cToolTip := "Presione para Cancelar"

   ACTIVATE DIALOG oDlg CENTERED ON INIT  oninit( oDlg )
   ? nRad1, nRad2
   
RETURN NIL


En el segundo grupo de radios checo el valor de nRad2 y me los da correctos pero en los ifs no puedo accesar a las bases de datos segun el valor de nRad2

Saludos
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com

Continue the discussion