/*
// Clase TDpEdit
// Edición de Formulario para: Incluir, Consultar, Modificar y Eliminar Registros
// 01/12/2002
*/
CLASS DPEDIT
DATA lAutomatic AS LOGICAL INIT .F.
DATA lSalir // Condicion de Salida o Cerrar el Control
DATA lChange // Indica si Hubo Algún Cambio en el Formulario
DATA lMultiple // Indica que la misma Variable tiene multiples ejecuciones
DATA lAutoInclude // Indica si incluye de manera automática
DATA lCancel // Cancelación Solicitada Afirmativa
DATA lDlg // Indica si es MDI/DLG Controles
DATA lDesign // Si ha sido Diseñado o No
DATA lDialog INIT .F. // Si el Formulario no es MDI solo Dialogo
DATA lEdit
DATA lFirst INIT .F.
DATA lSaveHead // Indica que el Encabezado ya fué Grabado
DATA lMdi
DATA lActivated
DATA lFound
DATA lMsgError // Evita los Mensajes de Error SCRIPT
DATA lErrorSave INIT oDp:lErrorSave // Muestra el Error Cuando APLICA COMMIT
DATA lIsDef
DATA lEscClose // Cerrar con ESC
DATA lMsgBar INIT .F.
DATA lWnd INIT .T. // Con esta Clase no se requiere Ventana
DATA lPaste INIT .T. // Activa la Opcion Pegar cuando se presiona Buscar
DATA lSetDef INIT .T.
DATA lSavedDsn INIT .F.
DATA lBrwCopy INIT .F. // Copia lista de los Browse
DATA lClose INIT .F. // JN 06/11/2016
DATA lSqlBegin INIT .T. // Caso de DPXBASE, Guarda en DpXbase y no en el formulario DPEDIT
DATA lCreaRegIntRef INIT .T.
DATA lAutoClose INIT .F. // indica cerrar el formulario cuando falla scrollget por la falta de campos
DATA lIntRef INIT .T. // Valida la Integridad Referencial
DATA lMdiBar INIT .F. // En caso .T. La Barra de botones sera ampliada
DATA lPrint INIT .T. // Boton es Imprimir
DATA lFileEdt INIT .F. // Requiere Archivo EDT, Cuando se crea el formulario podra indicarse la condicion .T.
// Funciones para ScrollGet
DATA lVScroll INIT .F.
DATA lHScroll INIT .F.
// Restringir estos Botones
DATA lInc INIT .T.
DATA lCon INIT .T.
DATA lMod INIT .T.
DATA lEli INIT .T.
DATA lLock INIT .F.
DATA lEof INIT .F.
DATA lBof INIT .F.
// MSGRUNVIEW
DATA lMsgBar INIT .F.
DATA lStop_ INIT .F.
DATA lReset INIT .F.
DATA lStop INIT .F.
DATA aDataKey AS ARRAY INIT {}
DATA aVars AS ARRAY INIT NIL
DATA aIncremental // Campos que se AutoIncrementan
DATA aSetKey AS ARRAY INIT {}
DATA aScrollSize INIT {}
DATA aSayGroup INIT ARRAY(250)
DATA aBtnActive // Permisos en Botones
DATA aRecord // Copia del Registro que esta en Edición
DATA aCopyEdit // Hace una Copia de las Variables declaradas
DATA aScrollGets // Lista de los Scrolls Gets
DATA aButtons // Botones de Opciones, tipo Documento
DATA aFind // Controles Find
DATA aControls // Controles
DATA aLevel // Etiqueta de los Campos
DATA aFieldsTable
DATA aBrwFocus INIT {} // Copia de los Browse Copiados en BlostFocus
DATA aTablesH INIT {} // Requerido DPCLASS para Generar HTML
// Para Buscar y Consultar
DATA aValid // Validación de los Controles (Buscar y Consultar)
DATA aWhen // Condicion de los Controles
DATA aItems // Itemns de los ComboBox
DATA aOpcButtons // Botones de las Opciones
DATA aEditButtons // Botones de la Edición
DATA aDpEdit // Formularios Relacionados
DATA aTableLink // Tablas Enlazadas
DATA aMemo // Datos del Memo
DATA aRepeatget
DATA aDataTable
DATA aMsgItem INIT {}
DATA cName AS CHARACTER INIT "" READONLY
DATA cFile // Nombre del Archivo de Controls
DATA cTitle // Titulo de la Ventana
DATA cVarPublic // Nombre de la Instancia
DATA cFileEdit // Nombre del Archivo de Controles
DATA cScript // Nombre del Programa Script que se Ejecuta
DATA cTable // Nombre de la Tabla
DATA cCancel // Function que se ejecuta para Cancelar
DATA cPreSave // PreGrabar
DATA cSave // PostGrabar
DATA cView // Programa Consultar
DATA cLoad // Programa de Carga de Datos
DATA cAfterLoad INIT "AFTERLOAD" // ejecutar luego del Load
DATA cWhere // Condición del Campo que se Modifica
DATA cDataKey // Clave del registro
DATA cPrint // Programa que Ejecuta la Impresión
DATA cDelete // Función que Ejecuta Eliminar
DATA cList // Programa que hace el ListBox
DATA cListWhere // Where para la Lista de Trabajadores
DATA cFind // Programa Buscar FRMFIND
DATA cListTitle // Titulo para Browse
DATA cSqlIni // Query Inicial
DATA cSingular // Nombre Singular
DATA cFileChm
DATA cTopic
DATA cFileBmp // Bmp para el Brush
DATA cFindNoEnter
DATA cScope INIT "" // Filtro
DATA cScopeF INIT ""
DATA cIdFrm INIT ""
DATA cFieldFile INIT "" // Campo Digitalizacion de Documentos VINCULO con DPFILEEMP
DATA cFileRtf INIT "" // Archivo de Ayuda RTF
DATA cFileRtfOld INIT oDp:cHelpRtf
DATA cNombre INIT ""
DATA cOrderBy,cPrimary,cDesde,cHasta,cActual
DATA cFieldAud INIT "" // Pistas de Auditoria
DATA cMsgBar INIT "" // Mensaje de Barra Inferior
DATA cVarName INIT "" // Necesario BRRUNNEW/DPXBASE
DATA cOnClose INIT "ONCLOSE"
DATA cTextGroup INIT ""
DATA cBtnList INIT "xbrowse.bmp"
DATA cScrFind INIT "DOCFIND"
DATA cScopeFind,cSqlFin // Filtro para Buscar
DATA cText INIT ""
DATA nMode // Tipo de Formulario =0 Simple
DATA nMaxButtons // Cantidad de Botones, Edicion Linea Superior
DATA nPos AS NUMERIC INIT 0 READONLY // Posicion de la ultima Variable
DATA nOpction // Número de Opción de Ejecución
DATA nOrder AS NUMERIC INIT 1 // Orden del Encabezado
DATA nClrPane // Color del Dialogo
DATA nFileMain AS NUMERIC INIT 0 // Registro con DPFILEEMP
DATA nBtnWidth INIT 40
DATA nBtnHeight INIT 40
DATA nBarHeight INIT 40+5
DATA nClrPane1 INIT 0
DATA nClrPane2 INIT 0
DATA oDlg // Dialogo de Controles
DATA oWnd // Ventana MDI
DATA oScript // Programa DpXbase que se Ejecuta con la Clase
DATA oScroll //
DATA oWhere // Objeto para Asignar los Filtros Mediante Otro Formulario MDI
DATA oBrw // Browse de Navegación
DATA oTable // Tabla de Datos
DATA oToolMsg // ToolTip
DATA oBody // Cuerpo de Documento
DATA oTmr // Controlador
DATA oCtrDoc // Controlador de Inclusión de Documentos
DATA oIntRef // Control de Integridad Referencial
DATA oEditMemo // Edición de Campo Memo
DATA oEditScr // Edición SCROLL para Campos Adicionales
DATA oFocus // Foco del Get
DATA oControl // Foco perdido con Lost/Got Focus
DATA oBrush
DATA oFrmLnk
DATA oDb // Gestor de la Base de datos
DATA oDpLbx
DATA oSayRecord // Muestra en la Super de la Barra la Posición
DATA oAdjustWnd // Ajusta el Control según
DATA oBar // Contiene Controles
DATA oMeter INIT NIL
DATA oBtnStop INIT NIL
DATA oMeter INIT NIL
DATA nNumLbx // Número del ListBox Que llamó al Formulario
DATA nNumEdit
DATA nRecno INIT 0
DATA nRecnoOld INIT 0 // Registro Anterior
DATA nRecCount INIT 0
DATA nData INIT 0
DATA nRadio INIT 1
DATA nRecord INIT 0
DATA bEnd
DATA bValid // Validación de Salida
DATA bSet // Actualiza Desde Otro Formulario
DATA bInit // Ejecución Cuando se Inicia el Dialogo
DATA bKeyF10
DATA bPostRun init {||NIL}
DATA bLostFocus // JN 06/11/2016
DATA bGotFocus // Recuperación de Focus
DATA uValue1,uValue2,uValue2,uValue3,uValue4,uValue5
METHOD NEW(cTitle, cFile, cVarPublic, lWindows, lDialog, oWnd, lModal, lOnlyMdi )
METHOD End()
METHOD NOTIFY() INLINE NIL
METHOD Add( cName, xValue )
METHOD Del( cName )
METHOD Get( cName )
METHOD Set( cName, xValue )
METHOD VarPut(cName,xValue)
METHOD NewFilter(nOption,cOption) INLINE EJECUTAR("BRWNEWFILTER",Self,nOption,cOption)
METHOD SetBotBar()
METHOD SETMSGBAR_ON()
METHOD SetMsgItem(cText,nlen,bAction) INLINE AADD(::aMsgItem,{cText,nLen,bAction,NIL}),::lMsgBar:=.T. // JN 12/07/2018
METHOD SetMsgItemText(nId,cText) INLINE IF(nId>0 .AND. nId<=LEN(::aMsgItem), (::aMsgItem[nId,4]:SetText(CTOO(cText,"C")),::aMsgItem[nId,4]:Refresh()),NIL)
METHOD SetMsg(cMsgBar) INLINE (::cMsgBar:=cMsgBar,;
IF(ValType(::oWnd)="O",(::oWnd:oMsgBar:SetMsg(::cMsgBar),::oWnd:oMsgBar:Refresh()),NIL))
METHOD GetPos( cName )
METHOD Release()
METHOD BtnSetMnu(cBtn,cOption,cFunction,cFileBmp,cPrgSubmenu) INLINE AADD(::aBtnMnu,{cBtn,cOption,cFunction,cFileBmp,cPrgSubmenu}) // Opciones para ser Incluidas en los Botones
METHOD SetScroll(n1,n2,n3,n4) INLINE (::lVScroll:=.T.,;
::lHScroll:=.T.,;
::lMsgBar :=.F.,;
::aScrollSize:={n1,n2,n3,n4})
METHOD GetWhere(cPrimary)
METHOD RECCOUNT(lIni)
METHOD IsDef(cName) // INLINE (::lIsDef:=.t.,oSend(Self,cName)!=NIL)
METHOD Load( nOption, nSkip)
METHOD CheckBtn()
METHOD SetColorBar(nClrText,nClrPane) // Color para las Barras
METHOD CreateVars( oObj )
METHOD SetTimer( bAction, nInterval )
METHOD SetTable( oTable, lCreateWindow, oDb )
METHOD SetEdit(lOn) // Establece Condicion de Edición
METHOD GetValue(cField) // GetValue()
METHOD ViewTable(cTable,cField,cWhere) // Indica la cantidad de tablas asociadas
METHOD LbxRefresh()
METHOD BuildLink() // Visualiza las Tablas Asociadas
METHOD Activate( bInit,bValid )
METHOD Incremental( cVarName, lZero, cSql, cWhere )
METHOD LinkTable(cTable,cSql)
METHOD CreateWindow()
METHOD Windows() INLINE CreateWindow()
METHOD ValUnique( cKey,cField,cMsg,cWhere ) //jn
METHOD LostFocus()
METHOD GotFocus()
METHOD RunBtn(nPos,nValid)
METHOD Save() //jn
METHOD Cancel(lAsk,lFromValid) //jn
METHOD DestroyMsg()
METHOD GetWhereMax()
METHOD MOVETO(oControl)INLINE EJECUTAR("FRMMOVE",SELF,oControl) // Mueve el Control hacia la posición del Control
METHOD Delete()INLINE ::RunScr(::cDelete)
METHOD RunScript(cFunction,uPar1,uPar2)
METHOD DelRecord(lIntRef) // Borra con la Integridad Ref
METHOD PutVar(cVarName,nValue,oSay) // Asigna Valir y Refresca Objeto
METHOD SetMemo(cField,cTitle,nTop,nLeft,nWidth,nHeight)
METHOD SetBmp(cField,cTitle,nTop,nLeft,nWidth,nHeight)
METHOD SetAdjuntos(cField,cTitle)
METHOD SetIcon(cFile)
METHOD RepeatGet(aFiedls,aExcluye)
METHOD Find()
METHOD CancelFind()
METHOD ChkIntRef()
METHOD RunKey(nKey) // Opciones I,C,M del Formulario
METHOD SetKey(nKey,bAction)
METHOD ValidDlg()
METHOD ValidWnd(bValid)
METHOD Prepare()
METHOD Paste()
METHOD Inspect() INLINE EJECUTAR("INSPECT",Self)
METHOD SetScript(cScript)
METHOD AdjustWnd(oControl) INLINE ::oAdjustWnd:=oControl
METHOD ONCLOSE()
METHOD DEFBTN()
METHOD UpdateFromTable()
METHOD ApEditMemo() INLINE (CursorWait(),;
KillGetCol(::oBody),;
::oEditMemo:=_DPMEMOEDIT(Self,::oEditMemo),;
::LinkEdit(::oEditMemo))
METHOD LockTable( ) INLINE (IIF(!::lLock,::oTable:LockTable(),NIL),;
::lLock:=.T.)
METHOD UnLockTable( ) INLINE (IIF(::lLock,::oTable:UnLockTable(),NIL),;
::lLock:=.F.)
METHOD EditMemo() INLINE ::SetMemo()
METHOD IsSaveHead(lUpdate,cPrimary)
METHOD RunScr(cProgram)
METHOD SetDefault()
METHOD SetDefValue() INLINE EJECUTAR("FRMSETDEFAULT",SELF) // JN 8/12/2018, Asigna los Valores por Defecto
METHOD ONINIT()
METHOD List(cWhere,cTitle)
METHOD RUNPRINT()
METHOD ScrollGet(cTable,cFileScg,cExcluye,oWnd,nType,oFont,nStyle)
METHOD ScrollField(cTitle) // Campos AdicionaleS
METHOD LinkEdit(oDpEdit) INLINE (AADD(::aDpEdit,OCLONE(oDpEdit))) // JN 28/02/2014 ,DpFocus(oDpEdit:oDlg)) // Relación Entre Formularios
METHOD KillEdit(oDpEdit)
METHOD OpcButtons(cOption,cBmp,cRun,cWhen,nKey,cType) INLINE;
nKey:=IIF( nKey=NIL, 0 , nKey ),;
AADD(::aOpcButtons ,{cBmp,GetFromVar(cOption),cRun,cWhen,nKey,cType})
METHOD CloseAllEdit()
METHOD EditButtons(cOption,cBmp,cRun,cWhen,nKey) INLINE;
nKey:=IIF( nKey=NIL , 0 , nKey ),;
AADD(::aEditButtons,{cBmp,cOption,cRun,cWhen,nKey})
METHOD SetMsg(cMsg) INLINE IIF( ::lMsgBar , (::oDlg:oMsgBar:SetMsg(cMsg),::oDlg:oMsgBar:Refresh()) , NIL)
METHOD SetBtnBar(nAlto,nAncho,oBar,nCol)
METHOD Close()
METHOD ShowMsg(cToolTip,oControl,nClrPane,nClrText) // JN CLASS TWindow
METHOD MensajeErr(cToolTip,oControl,nRow,nCol) INLINE ::ShowMsg(cToolTip,oControl,nRow,nCol)
METHOD Level(cField)
METHOD SetLevel(cField,cText)
METHOD FRMTITLE(cTitle)
METHOD FRMCENTRAR()
METHOD FRMSETTOTAL(nCant)
METHOD FRMSET(n,lSay,bBlq)
METHOD FRMTEXT(cText,bBlq)
METHOD FRMSAY(cText,bBlq)
METHOD FRMHIDE()
METHOD FRMSHOW()
METHOD FRMCLOSE()
METHOD HandleEvent( nMsg, nWParam, nLParam ) EXTERN ;
WndHandleEvent( Self, nMsg, nWParam, nLParam )
METHOD COMMAND(nValue) INLINE 1=1
ERROR HANDLER OnError( cMsg,nPar1,nPar2,nPar3,nPar4,nPar5,nPar6,nPar7,nPar8,nPar9,nPar10,nPar11,nPar12,nError )
ENDCLASS
//EOF