Clase TDPLBX.PRG

01 cFileLbx    :=Nombre del Archivo de parametros, ejemplo forms\dpmenu.lbx
02 cTitle      :=Titulo de la ventana, puedes utilizar macrosustituciones &oDp:DPMENU
03 cWhere      :=Condición clausula WHERE para la setencia SQL, facilita Filtrar registro en el query, ejemplo: OPE_ACTIVO=1
04 lPage       := Por defecto es .F. Indica si el browse se navega por pagina
05 cField      := Nombre del campo que exportará cuando se utiliza desde el control BMPGET, ejemplo: OPE_NUMERO
06 uValue      := Valor por defecto .F. donde ubicara el registro de posicionamiento segun clave primaria ejemplo: “010” focalizará el registro cuyo numero de usuario es igual “010”
07 aParam      := Arreglo contentivo de parametros para ser utilizados en otro progragrama vinculado con el browse
08 lDialog     := Valor por defecto .F. el formulario será presentado mediante ventana MDI o Dialog
09 oDb         := Objeto de la base de datos donde se ejecutará el cursos, caso de base de datos ubicadas en servidores remotos
10 oGet        := Objeto que solicita la ejecucion del formulario y facilita la posicion del browse
11 oWndMain    := Ventana donde contenedora para MDICHILD, por defecto su valor es oDp:oFrameDp
12 bIni        := Bloque de codigo de ejecución inicial cuando se activa la ventana.

Ejemplo:

   @ 17,01 SAY “Facturación”

   @ 18,01 BMPGET oDefFis:oTipDocVta VAR oDefFis:cTipDocVta;
                  VALID oDefFis:VALTIPDOCVTA();
                  NAME “BITMAPS\find22.BMP”;
                  ACTION (oDpLbx:=DpLbx(“DPTIPDOCCLI.LBX”,”Tipo de Documento para Facturación”,”TDC_PRODUC=1 AND TDC_ACTIVO=1 AND                                                     TDC_CXC”+GetWhere(“=”,”D”),NIL,NIL,NIL,NIL,NIL,NIL,oDefFis:oTipDocVta),;
                          oDpLbx:GetValue(“TDC_TIPO”,oDefFis:oTipDocVta));

                  SIZE 48,10

   @ 18, 50 SAY oDefFis:oSayTipDocVta PROMPT SQLGET(“DPTIPDOCCLI”,”TDC_DESCRI”,”TDC_TIPO”+GetWhere(“=”,oDefFis:cTipDocVta))

RETURN oDefFis

FUNCTION DpLbx(cFileLbx,cTitle,cWhere,lPage,cField,uValue,aParam,lDialog,oDb,oGet,oWndMain,bInit)
   LOCAL oDpLbx

   DEFAULT lPage :=.F.,;
           lDialog:=oDp:lSetDialog // Generado por SETDIALOG

   oDp:lSetDialog:=.F.

   oDp:lLbxRun:=.T.

   // Obtiene datos del Servidor Remoto
   IF !oDp:oDbServer=NIL .AND. oDb=NIL
       oDb:=oDp:oDbServer
       SETDBSERVER(NIL)
   ENDIF

   CursorWait()

   cFileLbx+=IIF( !”.”$cFileLbx,”.lbx” , “”)

   oDp:aRowSql:={} // Lista de Campos Seleccionados

   IF Empty(uValue) .AND. ValType(oGet)=”O”
      uValue:=oGet:GetText()
   ENDIF

   Macroeje(“ISPCPRG()”)

   oDpLbx:=TDpLbx():New(cFileLbx,cTitle,cWhere,lPage,cField,uValue,aParam,lDialog,oDb,oGet,oWndMain,bInit)

   oDp:oLbx:=oDpLbx

   IF !oDpLbx:lSqlOk

       oDpLbx:End()

   ELSE

     oDpLbx:Activate()

     EJECUTAR(“LBXINIRUN”,oDpLbx) // Donde se Inician Todos los LBX

   ENDIF

   oDp:oLbx:=oDpLbx

RETURN oDpLbx

/*
* TDpLbx
* Pasa los valores del cursor de la clase TDBODBCD/TDBTABLE(MYSQL NATIVO), hacia arreglos
* facilitando su manejo de manera similar a RDD
* Juan Navas 19/04/2003
*/

CLASS TDpLbx FROM TDpClass

// DATA aVars             // Control de los Campos
   DATA aBtnRun           // Ejecuciones de los Botones
   DATA aBtnWhen          // Condicione de los Botones
   DATA aBtns             // Lista de Botones
   DATA aZero             // Nombre de los Campos
   DATA aFind             // Lista de Búsquedas por Campo, Almacena las Ultimas Búsquedas
   DATA aCargo            // Almacena Cualquier Valor
   DATA aFields           // Campos de la Columna
   DATA aLineEmpty        // Línea Vacia
   DATA aParam            // Valores para los parametros ::uData1,::uData2
   DATA aColColor INIT {} // Colores para buscar

   DATA nNumLbx // Identificador del DpLbx
   DATA nStyle  // Stilo del Browse
   DATA nKey    // Tecla Presionada
   DATA nBtnDblClic INIT 0

   DATA nWidth
   DATA nHeight

   DATA nClrPane1 INIT oDp:nClrPane1
   DATA nClrPane2 INIT oDp:nClrPane2

   DATA nColSel   INIT 0

   DATA nItemLen  INIT 100
   DATA nItemLen1 INIT 100
   DATA nItemLen2 INIT 0

   DATA cFileLbx    // Nombre del Campo
   DATA cTable      // Nombre de la Tabla
   DATA cSql        // Comando que Crea el Cursor
   DATA cOrderBy    // Está Representado
   DATA cPrimary    // Clave Primaria
   DATA cOrder      // Ordenado por
   DATA cPreDelete
   DATA cPostDelete
   DATA cTopic              // Nombre de la Tabla
   DATA cFileChm            // Nombre del Archivo de Ayuda
   DATA uFind               // Valor que Está Buscando
   DATA cFieldFound
   DATA cIniSql             // Ejecución Inicial SQL
   DATA cCargo              // Almacena Cualquier Valor
   DATA cScope              // Condicion de la Tabla
   DATA cTitle              // Titulo
   DATA cWhere              // Clausula Where
   DATA cFieldFind          // Campo de Búsqueda
   DATA cFileRtf INIT “”    // Archivo de Ayuda RTF
   DATA cFileRtfOld INIT oDp:cHelpRtf
   DATA cIniFilter INIT “”  // Inicia como buscador
   DATA cMessage INIT “”
   DATA cFileSql INIT “”

   DATA cFilter_Log INIT “”
   DATA cFilter_text INIT “Activo”

   DATA cItem INIT “” // Cantidad de Registros
   DATA cItem1 INIT “”
   DATA cItem2 INIT “”

   DATA uValueFind // Valor de Búsqueda
   DATA uValue1,uValue2,uData1,uData2
   DATA cSqlFilter // Necesario para rehacer la búsqueda

   DATA nClrText  INIT oDp:nGris // CLR_BLUE
   DATA nClrText1 INIT 0
   DATA nClrText2 INIT 0
   DATA nClrText3 INIT 0
   DATA nClrText4 INIT 0
   DATA nClrText5 INIT 0

   DATA cClrText  INIT “”
   DATA cClrText1 INIT “”
   DATA cClrText2 INIT “”
   DATA cClrText3 INIT “”
   DATA cClrText4 INIT “”
   DATA cClrText5 INIT “”
   DATA nClrPane3 INIT 0

   // DATA cIniGet // Get de Búsqueda

   DATA oCursor   // Nombre del Cursor
   DATA oBrw      // Browse editando la Tabla
   DATA oBar
   DATA oWnd      // Ventana Mdi
   DATA oMsgBar   // Mensajes
   DATA oFocusOld // Foco Anterior
   DATA oDb
   DATA oGet
   DATA oWndMain
   DATA oLbx
   DATA oFilterLog

   DATA oItem,oItem1,oItem2

   DATA bLDblClick,; // Accion que debe Ejecutar el Browse
        bRClicked ,;
        bStart ,;
        bFor        // Localizador de Registro

   DATA bValid INIT {||.T.}

   DATA lAutomatic             // Modo de Asignación de Valores
   DATA lFind
   DATA lPage                 // Si trabaja por Paginado Según Lineas del Browse
   DATA lDeleteRef            // Indica si Borra Data Referencial
   DATA lDialog
   DATA lStart
   DATA lExport               // Expotar
   DATA lSqlOk                // Si la sentencia SQL es valida, caso de ser no, retorna
   DATA lTablaAcc INIT .T.    // Permisos de Acceso dede la Tabla
   DATA lGoBottom INIT .F.
   DATA lFullSize INIT .F.
   DATA lFullHight INIT .F.
   DATA lIniFilter INIT .F.
   DATA lFullWidht INIT .F.

   DATA lDesc INIT       .F. // lDesc en la Clausula ORDER BY (CAMPOS DESC) genera Incidencai
   DATA lResized INIT    .F.
   DATA lFilterLog INIT  .F.
   DATA uData1,uData2,uData3

   METHOD New( cFileLbx, cTitle , cWhere , lPage , uValue)
   METHOD SetBar(oWnd,oBar,oBrw)

   METHOD Set(cName,xValue) INLINE (__objAddData( Self, cName),__objSendMsg(Self,cName,xValue))

   METHOD IsDef( cName )

   METHOD Gotop() INLINE (::oBrw:GoTop(),::oBrw:Refresh(.T.))

   METHOD RunAction(nButton,nOption,lRun)
   METHOD RunKey(nKey)
   METHOD GetValue(cField,oGet)
   METHOD GotFocus() INLINE (oDp:cHelpRtf:=::cFileRtf,::oBrw:GotFocus())

   METHOD Query()    INLINE EJECUTAR(“BRWMAKERRUN”,::cTable)
   METHOD Find()
   METHOD SetFilter() INLINE EJECUTAR(“LBXSETFILTER”,SELF)

   METHOD Reporte(cCodRep)
   METHOD Locate(bFor,lNext,nRecord)
   METHOD FindMas()
   METHOD GetRowSql()
   METHOD SetOrder(nCol)

   METHOD Delete(cMsg,lAsk,nOrder,cClave,cField,lDirect,cPosDel)
   METHOD Close()
   METHOD DbSeek(oCol,uValue,nLastKey)
   METHOD DbSeek2 (oCol,uValue,nLastKey)
   METHOD ClassName() INLINE “TDPLBX”
   METHOD Activate()
   METHOD ChkData()
   METHOD Preview() INLINE EJECUTAR(“BRWPREVIEW”,::oBrw,NIL)
   METHOD Print()
   METHOD CTOHTML(cFile) INLINE ::oCursor:CTOHTML(cFile)
   METHOD SetMsg(cMsg) INLINE (::oWnd:oMsgBar:SetMsg(cMsg),::oWnd:oMsgBar:Refresh())
   METHOD LbxChange()
   METHOD Reload()
   METHOD Inspect() INLINE EJECUTAR(“INSPECT”,Self)
   METHOD OpenTable()
   METHOD CancelEdit()
   METHOD CancelFind()

   METHOD Refresh()
   METHOD End()

   METHOD HandleEvent( nMsg, nWParam, nLParam ) EXTERN ;
                             WndHandleEvent( Self, nMsg, nWParam, nLParam )

   ERROR HANDLER OnError( cMsg,nPar1,nPar2,nPar3,nPar4,nPar5,nPar6,nPar7,nPar8,nPar9,nPar10,nPar11,nPar12,nError )

ENDCLASS