FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ComboBox - Consulta
Posts: 196
Joined: Fri May 15, 2009 01:25 AM
ComboBox - Consulta
Posted: Sun Oct 16, 2011 05:17 AM
Por favor si alguien pudiera ayudarme


Este es mi codigo

Code (fw): Select all Collapse
STATIC FUNCTION Filtra()
    LOCAL oDlg, oCbx
    LOCAL aoObjetos := { nil, nil }
    LOCAL aoBtn := { nil, nil }
    LOCAL cTitulo := "Filtrado de cotizaciones"
    LOCAL cId_Clave, cNomClave, cVar, aItems
    
    aItems := {"Cliente ","Equipo  ","Vendedor"}
    
    cId_Clave := SPACE(5)
    cNomClave := SPACE(50)
    cVar         := "Cliente"
    
    DEFINE DIALOG oDlg RESOURCE "Dlg_Filtra" TITLE cTitulo
    
    REDEFINE COMBOBOX oCbx VAR cVar ID 201 OF oDlg UPDATE ;
        ITEMS aItems

    IF LEFT(cVar,1) == "C"              
        REDEFINE GET aoObjetos[1] VAR cId_Clave ID 101 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Clave := ValCod( cId_Clave, "cliente" ), ;
                                    cNomClave := cliente->nombre, ;
                                    oDlg:Update(), .T. } ) ;
            MESSAGE "Clave de cliente"
            aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave del cliente"
            
    ELSEIF LEFT(cVar,1) == "E"
        REDEFINE GET aoObjetos[1] VAR cId_Clave ID 101 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Clave := ValCod( cId_Clave, "eqpo" ), ;
                                    cNomClave := eqpo->nombre, ;
                                    oDlg:Update(), .T. } ) ;
            MESSAGE "Clave de tipo de equipo"
            aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave del equipo"
            
    ELSE
        REDEFINE GET aoObjetos[1] VAR cId_Clave ID 101 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Clave := ValCod( cId_Clave, "agente" ), ;
                                    cNomClave := agente->nombre, ;
                                    oDlg:Update(), .T. } ) ;
            MESSAGE "Clave del vendedor"
            aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave del vendedor"
            
    ENDIF
    
    REDEFINE GET aoObjetos[2] VAR cNomClave ID 102 OF oDlg UPDATE ;
        WHEN .F.
        
    REDEFINE BUTTONBMP aoBtn[1] ID 400 OF oDlg ;
        PROMPT "&Aceptar " BITMAP "BTN_OK" TEXTRIGHT ;
        ACTION oDlg:End()
        aoBtn[1]:cToolTip := "Presione para continuar"
        
    REDEFINE BUTTONBMP aoBtn[2] ID 401 OF oDlg ;
        PROMPT "&Cancelar " BITMAP "BTN_CAN" TEXTRIGHT ;
        ACTION oDlg:End()
        aoBtn[2]:cToolTip := "Presione para cancelar"
        
    ACTIVATE DIALOG oDlg CENTERED
    
RETURN NIL


Como le hago para que en el redefine combobox me actualice la variable cVar dependiendo del item que seleccione en el combo y en consecuencia pueda validar el codigo que esta en el IF ENDIF
Estoy pensando que algo tiene que ver la instruccion ON CHANGE en el combo pero no se como implementarla

De antemano muchas gracias

Saludos
Juan Arroyo
México
FWH 7.12 VERCE 5.3 xHarbour 1.1.0
juan_arroyo_t@hotmail.com
Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: ComboBox - Consulta
Posted: Sun Oct 16, 2011 05:40 AM
Intenta algo como esto: (No Probado)

Code (fw): Select all Collapse
    REDEFINE COMBOBOX oCbx VAR cVar ID 201 OF oDlg UPDATE ;
        ITEMS aItems ON CHANGE Validar(oDlg, cVar)


Code (fw): Select all Collapse
FUNCTION Validar(oDlg, cVar)
    IF LEFT(cVar,1) == "C"              
        REDEFINE GET aoObjetos[1] VAR cId_Clave ID 101 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Clave := ValCod( cId_Clave, "cliente" ), ;
                                    cNomClave := cliente->nombre, ;
                                    oDlg:Update(), .T. } ) ;
            MESSAGE "Clave de cliente"
            aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave del cliente"
            
    ELSEIF LEFT(cVar,1) == "E"
        REDEFINE GET aoObjetos[1] VAR cId_Clave ID 101 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Clave := ValCod( cId_Clave, "eqpo" ), ;
                                    cNomClave := eqpo->nombre, ;
                                    oDlg:Update(), .T. } ) ;
            MESSAGE "Clave de tipo de equipo"
            aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave del equipo"
            
    ELSE
        REDEFINE GET aoObjetos[1] VAR cId_Clave ID 101 OF oDlg UPDATE ;
            PICTURE "@!" ;
            VALID EVAL ( { || cId_Clave := ValCod( cId_Clave, "agente" ), ;
                                    cNomClave := agente->nombre, ;
                                    oDlg:Update(), .T. } ) ;
            MESSAGE "Clave del vendedor"
            aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave del vendedor"
            
    ENDIF

RETURN NIL


No crees que te convendría más usar Forders??? Tan solo un comentario...

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 196
Joined: Fri May 15, 2009 01:25 AM
Re: ComboBox - Consulta
Posted: Sun Oct 16, 2011 03:10 PM

Muchas gracias por tu respuesta

Voy a ponerlo en practica y ya te estare informando

Saludos

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: ComboBox - Consulta (SOLUCIONADO)
Posted: Sun Oct 16, 2011 06:10 PM
Bayron

Me incline por Folders

Esta es mi imagen
http://img269.imageshack.us/img269/4373/filtra.jpg

y este es mi codigo

Code (fw): Select all Collapse
 STATIC FUNCTION CreaFiltro( oDlgCot )
    local oDlg, oFld
   LOCAL aoObjetos := { nil, nil, nil, nil, nil, nil, nil, nil }
   LOCAL aoBtn := { nil, nil, nil, nil, nil, nil, nil }
   LOCAL cId_Cli := "", cId_Eqpo := "", cId_Ven := ""
   LOCAL cNomCli := "", cNomEqpo := "", cNomVen := ""
    LOCAL cTitulo := "Filtrado de cotizaciones"
    LOCAL nOpcion
    
   cId_Cli  := cId_Eqpo := cId_Ven := SPACE(5)
    cNomCli  := SPACE(50)
    cNomEqpo := cNomVen := SPACE(30)
    
   DEFINE DIALOG oDlg RESOURCE "Fld_Filtra" TITLE cTitulo

   REDEFINE FOLDER oFld ID 110 OF oDlg ;
      PROMPT "Cliente", "Equipo", "Vendedor" ;
      DIALOGS "Sub_Cliente", "Sub_Equipo", "Sub_Vendedor"
      
   // Redefine controles dialogo 1   
    
    REDEFINE GET aoObjetos[1]  VAR cId_Cli ID 101 OF oFld:aDialogs[ 1 ] UPDATE ;
      PICTURE "!!!!!!" ;
        MESSAGE "Clave del cliente" ;
      VALID EVAL ( { || cId_Cli := ValCod( cId_Cli, "cliente"), ;
                                cNomCli := cliente->nombre, ;
                                nOpcion := 1, oDlg:Update(), .T. } )
        aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave del cliente"
        
   REDEFINE GET aoObjetos[2] VAR cNomCli ID 102 OF oFld:aDialogs[ 1 ] UPDATE ;
        WHEN .F.
        
    REDEFINE BUTTONBMP aoBtn[1] ID 400 OF oFld:aDialogs[1] ;
    PROMPT "A&ceptar " ;
    BITMAP "BTN_OK" TEXTRIGHT ;
    ACTION ( Filtra( nOpcion, cId_Cli, cNomCli, oDlgCot ), oDlg:End() ) ;
      MESSAGE "Aceptar" UPDATE
      aoBtn[1]:cToolTip := "Presione para Continuar"

    REDEFINE BUTTONBMP aoBtn[2] ID 401 OF oFld:aDialogs[1] ;
        PROMPT "&Cancelar " BITMAP "BTN_CAN" TEXTRIGHT ;
    ACTION ( lContinuar := .F., oDlg:End() ) ;
      MESSAGE "Cancelar" UPDATE
      aoBtn[2]:cToolTip := "Presione para Cancelar"     
        
    // Redefine controles dialogo 2
    
    REDEFINE GET aoObjetos[3]  VAR cId_Eqpo ID 101 OF oFld:aDialogs[ 2 ] UPDATE ;
      PICTURE "!!!!!!" ;
        MESSAGE "Clave del equipo" ;
      VALID EVAL ( { || cId_Eqpo := ValCod( cId_Eqpo, "eqpo"), ;
                                cNomEqpo := eqpo->nombre, ;
                                nOpcion := 2, oDlg:Update(), .T. } )
        aoObjetos[3]:cToolTip := "Introduzca o seleccione la clave del equipo"
        
   REDEFINE GET aoObjetos[4] VAR cNomEqpo ID 102 OF oFld:aDialogs[ 2 ] UPDATE ;
        WHEN .F.
        
    REDEFINE BUTTONBMP aoBtn[3] ID 400 OF oFld:aDialogs[2] ;
    PROMPT "A&ceptar " ;
    BITMAP "BTN_OK" TEXTRIGHT ;
    ACTION ( Filtra( nOpcion, cId_Eqpo, cNomEqpo, oDlgCot ), oDlg:End() ) ;
      MESSAGE "Aceptar" UPDATE
      aoBtn[3]:cToolTip := "Presione para Continuar"

    REDEFINE BUTTONBMP aoBtn[4] ID 401 OF oFld:aDialogs[2] ;
        PROMPT "&Cancelar " BITMAP "BTN_CAN" TEXTRIGHT ;
    ACTION ( lContinuar := .F., oDlg:End() ) ;
      MESSAGE "Cancelar" UPDATE
      aoBtn[4]:cToolTip := "Presione para Cancelar"         
        
    // Redefine controles dialogo 3   
    
    REDEFINE GET aoObjetos[5]  VAR cId_Ven ID 101 OF oFld:aDialogs[ 3 ] UPDATE ;
      PICTURE "!!!!!!" ;
        MESSAGE "Clave del vendedor" ;
      VALID EVAL ( { || cId_Ven := ValCod( cId_Ven, "agente"), ;
                                cNomVen := agente->nombre, ;
                                nOpcion := 3, oDlg:Update(), .T. } )
        aoObjetos[1]:cToolTip := "Introduzca o seleccione la clave del vendedor"
        
   REDEFINE GET aoObjetos[6] VAR cNomVen ID 102 OF oFld:aDialogs[ 3 ] UPDATE ;
        WHEN .F.
        
    REDEFINE BUTTONBMP aoBtn[5] ID 400 OF oFld:aDialogs[3] ;
    PROMPT "A&ceptar " ;
    BITMAP "BTN_OK" TEXTRIGHT ;
    ACTION ( Filtra( nOpcion, cId_Ven, cNomVen, oDlgCot ), oDlg:End() ) ;
      MESSAGE "Aceptar" UPDATE
      aoBtn[5]:cToolTip := "Presione para Continuar"

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

   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT ( oninit( oDlg ), aoObjetos[1]:SetFocus() )
    
return nil


Muchas gracias por tu ayuda

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

Continue the discussion