VERSION = 3.00 registry.vcxPixelsClassregistry registry.hPixelsClass1customregistrycustom registry.h registry.vcxcustomName = "odbcreg" odbcreg1filereg1customfilereg1foxreg oldinireg registry.hPixelsClassregistry oldiniregName = "oldinireg" custom registry.vcxName = "filereg" 1odbcregregistry registry.hPixelsClassregistryfoxregName = "foxreg" custom registry.vcx registry.hPixelsClassregistry*setfoxoption Sets an option from FoxPro registry settings. *getfoxoption Retrieves an option from FoxPro registry settings. *enumfoxoptions *getinisection Retrieves information from INI section. *getinientry Retrieves information from INI entry. *writeinientry Writes a specific INI entry. *loadinifuncs Loads functions needed for reading INI files.  registry.h+ registry.ht+ registry.h+ registry.ht+ registry.h+PROCEDURE setfoxoption LPARAMETER cOptName,cOptVal RETURN THIS.SetRegKey(cOptName,cOptVal,THIS.cVFPOptPath,THIS.nUserKey) ENDPROC PROCEDURE getfoxoption LPARAMETER cOptName,cOptVal RETURN THIS.GetRegKey(cOptName,@cOptVal,THIS.cVFPOptPath,THIS.nUserKey) ENDPROC PROCEDURE enumfoxoptions LPARAMETER aFoxOpts RETURN THIS.EnumOptions(@aFoxOpts,THIS.cVFPOptPath,THIS.nUserKey,.F.) ENDPROC Height = 16 Width = 100 nuserkey = 0 cvfpoptpath = cregdllfile = cinidllfile = codbcdllfile = ncurrentos = 0 ncurrentkey = 0 capppathkey = Name = "registry" *getapppath Checks and returns path of application associated with a particular extension (e.g., XLS, DOC). *getlatestversion Returns latest version for a specified application. *getapplication Retrieves application key. *loadodbcfuncs Loads ODBC registry functions. *getodbcdrvrs Retrieves ODBC drivers. *enumodbcdrvrs Enumerates through ODBC drivers. *enumodbcdata Enumerates through ODBC data sources.  PROCEDURE getapppath * Checks and returns path of application * associated with a particular extension (e.g., XLS, DOC). LPARAMETER cExtension,cExtnKey,cAppKey,lServer LOCAL nErrNum,cOptName cOptName = "" * Check Extension parameter IF TYPE("m.cExtension") # "C" OR LEN(m.cExtension) > 3 RETURN ERROR_BADPARM ENDIF m.cExtension = "."+m.cExtension * Open extension key nErrNum = THIS.OpenKey(m.cExtension) IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF * Get key value for file extension nErrNum = THIS.GetKeyValue(cOptName,@cExtnKey) * Close extension key THIS.CloseKey() IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF RETURN THIS.GetApplication(cExtnKey,@cAppKey,lServer) ENDPROC PROCEDURE getlatestversion LPARAMETER cClass,cExtnKey,cAppKey,lServer LOCAL nErrNum,cOptName cOptName = "" * Open class key (e.g., Excel.Sheet) nErrNum = THIS.OpenKey(m.cClass+CURVER_KEY) IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF * Get key value for file extension nErrNum = THIS.GetKeyValue(cOptName,@cExtnKey) * Close extension key THIS.CloseKey() IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF RETURN THIS.GetApplication(cExtnKey,@cAppKey,lServer) ENDPROC PROCEDURE getapplication LPARAMETERS cExtnKey,cAppKey,lServer LOCAL nErrNum,cOptName cOptName = "" * lServer - checking for OLE server. IF TYPE("m.lServer") = "L" AND m.lServer THIS.cAppPathKey = OLE_PATH_KEY ELSE THIS.cAppPathKey = APP_PATH_KEY ENDIF * Open extension app key m.nErrNum = THIS.OpenKey(m.cExtnKey+THIS.cAppPathKey) IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF * Get application path nErrNum = THIS.GetKeyValue(cOptName,@cAppKey) * Close application path key THIS.CloseKey() RETURN m.nErrNum ENDPROC 3 %UX(TwinCC Z7QFORM forms\repplaJUPNOMFORM PRINCIPALVOBARRA ITEMCOUNTFORMSClick,1!1)3 %UX(TwinCC Z7QFORM forms\manplaJUPNOMFORM PRINCIPALVOBARRA ITEMCOUNTFORMSClick,1!1)6 Q%U[(TwinCC Z7QFORMforms\repbalparJUPNOMFORM PRINCIPALVOBARRA ITEMCOUNTFORMSClick,1!1)5 Ƶ%UZ(TwinCC Z7QFORMforms\repdescuJUPNOMFORM PRINCIPALVOBARRA ITEMCOUNTFORMSClick,1!1)4 #%UY(TwinCC Z7QFORM forms\rephojaJUPNOMFORM PRINCIPALVOBARRA ITEMCOUNTFORMSClick,1!1); "";%U`(TwinCC Z7QFORM# forms\repeeffJ1UPNOMFORM PRINCIPALVOBARRA ITEMCOUNTFORMSClick,1!11)"Class foxribbon.vcx container11+Width = 616 Height = 92 Name = "panel6"  ribbongroup foxribbon.vcx container Ribbongroup1panel7 ribbonbuttonv foxribbon.vcx IPROCEDURE loadodbcfuncs IF THIS.lLoadedODBCs RETURN ERROR_SUCCESS ENDIF * Check API file containing functions IF EMPTY(THIS.cODBCDLLFile) RETURN ERROR_NOODBCFILE ENDIF LOCAL henv,fDirection,szDriverDesc,cbDriverDescMax LOCAL pcbDriverDesc,szDriverAttributes,cbDrvrAttrMax,pcbDrvrAttr LOCAL szDSN,cbDSNMax,pcbDSN,szDescription,cbDescriptionMax,pcbDescription DECLARE Short SQLDrivers IN (THIS.cODBCDLLFile) ; Integer henv, Integer fDirection, ; String @ szDriverDesc, Integer cbDriverDescMax, Integer pcbDriverDesc, ; String @ szDriverAttributes, Integer cbDrvrAttrMax, Integer pcbDrvrAttr IF THIS.lhaderror && error loading library RETURN -1 ENDIF DECLARE Short SQLDataSources IN (THIS.cODBCDLLFile) ; Integer henv, Integer fDirection, ; String @ szDSN, Integer cbDSNMax, Integer @ pcbDSN, ; String @ szDescription, Integer cbDescriptionMax,Integer pcbDescription THIS.lLoadedODBCs = .T. RETURN ERROR_SUCCESS ENDPROC PROCEDURE getodbcdrvrs LPARAMETERS aDrvrs,lDataSources LOCAL nODBCEnv,nRetVal,dsn,dsndesc,mdsn,mdesc lDataSources = IIF(TYPE("m.lDataSources")="L",m.lDataSources,.F.) * Load API functions nRetVal = THIS.LoadODBCFuncs() IF m.nRetVal # ERROR_SUCCESS RETURN m.nRetVal ENDIF * Get ODBC environment handle nODBCEnv=VAL(SYS(3053)) * -- Possible error messages * 527 "cannot load odbc library" * 528 "odbc entry point missing" * 182 "not enough memory" IF INLIST(nODBCEnv,527,528,182) * Failed RETURN ERROR_ODBCFAIL ENDIF DIMENSION aDrvrs[1,IIF(m.lDataSources,2,1)] aDrvrs[1] = "" DO WHILE .T. dsn=space(100) dsndesc=space(100) mdsn=0 mdesc=0 * Return drivers or data sources IF m.lDataSources nRetVal = SQLDataSources(m.nODBCEnv,SQL_FETCH_NEXT,@dsn,100,@mdsn,@dsndesc,255,@mdesc) ELSE nRetVal = SQLDrivers(m.nODBCEnv,SQL_FETCH_NEXT,@dsn,100,@mdsn,@dsndesc,100,@mdesc) ENDIF DO CASE CASE m.nRetVal = SQL_NO_DATA nRetVal = ERROR_SUCCESS EXIT CASE m.nRetVal # ERROR_SUCCESS AND m.nRetVal # 1 EXIT OTHERWISE IF !EMPTY(aDrvrs[1]) IF m.lDataSources DIMENSION aDrvrs[ALEN(aDrvrs,1)+1,2] ELSE DIMENSION aDrvrs[ALEN(aDrvrs,1)+1,1] ENDIF ENDIF dsn = ALLTRIM(m.dsn) aDrvrs[ALEN(aDrvrs,1),1] = LEFT(m.dsn,LEN(m.dsn)-1) IF m.lDataSources dsndesc = ALLTRIM(m.dsndesc) aDrvrs[ALEN(aDrvrs,1),2] = LEFT(m.dsndesc,LEN(m.dsndesc)-1) ENDIF ENDCASE ENDDO RETURN nRetVal ENDPROC PROCEDURE enumodbcdrvrs LPARAMETER aDrvrOpts,cODBCDriver LOCAL cSourceKey cSourceKey = ODBC_DRVRS_KEY+m.cODBCDriver RETURN THIS.EnumOptions(@aDrvrOpts,m.cSourceKey,HKEY_LOCAL_MACHINE,.F.) ENDPROC PROCEDURE enumodbcdata LPARAMETER aDrvrOpts,cDataSource LOCAL cSourceKey cSourceKey = ODBC_DATA_KEY+cDataSource RETURN THIS.EnumOptions(@aDrvrOpts,m.cSourceKey,HKEY_CURRENT_USER,.F.) ENDPROC  PROCEDURE getinisection LPARAMETERS aSections,cSection,cINIFile LOCAL cINIValue, nTotEntries, i, nLastPos cINIValue = "" IF TYPE("m.cINIFile") # "C" cINIFile = "" ENDIF IF THIS.GetINIEntry(@cINIValue,cSection,0,m.cINIFile) # ERROR_SUCCESS RETURN ERROR_FAILINI ENDIF nTotEntries=OCCURS(CHR(0),m.cINIValue) DIMENSION aSections[m.nTotEntries] nLastPos = 1 FOR i = 1 TO m.nTotEntries nTmpPos = AT(CHR(0),m.cINIValue,m.i) aSections[m.i] = SUBSTR(m.cINIValue,m.nLastPos,m.nTmpPos-m.nLastPos) nLastPos = m.nTmpPos+1 ENDFOR RETURN ERROR_SUCCESS ENDPROC PROCEDURE getinientry LPARAMETER cValue,cSection,cEntry,cINIFile * Get entry from INI file LOCAL cBuffer,nBufSize,nErrNum,nTotParms nTotParms = PCOUNT() * Load API functions nErrNum= THIS.LoadINIFuncs() IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF * Parameter checks here IF m.nTotParms < 3 m.cEntry = 0 ENDIF m.cBuffer=space(2000) IF EMPTY(m.cINIFile) * WIN.INI file m.nBufSize = GetWinINI(m.cSection,m.cEntry,"",@cBuffer,LEN(m.cBuffer)) ELSE * Private INI file m.nBufSize = GetPrivateINI(m.cSection,m.cEntry,"",@cBuffer,LEN(m.cBuffer),m.cINIFile) ENDIF IF m.nBufSize = 0 &&could not find entry in INI file RETURN ERROR_NOINIENTRY ENDIF m.cValue=LEFT(m.cBuffer,m.nBufSize) ** All is well RETURN ERROR_SUCCESS ENDPROC PROCEDURE writeinientry LPARAMETER cValue,cSection,cEntry,cINIFile * Get entry from INI file LOCAL nErrNum * Load API functions nErrNum = THIS.LoadINIFuncs() IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF IF EMPTY(m.cINIFile) * WIN.INI file nErrNum = WriteWinINI(m.cSection,m.cEntry,m.cValue) ELSE * Private INI file nErrNum = WritePrivateINI(m.cSection,m.cEntry,m.cValue,m.cINIFile) ENDIF ** All is well RETURN IIF(m.nErrNum=1,ERROR_SUCCESS,m.nErrNum) ENDPROC PROCEDURE loadinifuncs * Loads funtions needed for reading INI files IF THIS.lLoadedINIs RETURN ERROR_SUCCESS ENDIF DECLARE integer GetPrivateProfileString IN Win32API ; AS GetPrivateINI string,string,string,string,integer,string IF THIS.lhaderror && error loading library RETURN -1 ENDIF DECLARE integer GetProfileString IN Win32API ; AS GetWinINI string,string,string,string,integer DECLARE integer WriteProfileString IN Win32API ; AS WriteWinINI string,string,string DECLARE integer WritePrivateProfileString IN Win32API ; AS WritePrivateINI string,string,string,string THIS.lLoadedINIs = .T. * Need error check here RETURN ERROR_SUCCESS ENDPROC nuserkey User registry key. cvfpoptpath Registry path to VFP options settings. cregdllfile DLL file for registry functions. cinidllfile DLL file for INI functions. codbcdllfile DLL file for ODBC functions. ncurrentos Current operating system code. ncurrentkey Current registry key. lloadeddlls Whether registry key functions loaded. lloadedinis Whether INI functions loaded. capppathkey Application path registry key. lcreatekey Whether to create key if one does not already exist. lhaderror Whether an error occurred. lloadedodbcs Whether ODBC functions loaded. ldisallowexpanded lhasdllloaded *loadregfuncs Loads funtions needed for Registry. *openkey Opens a registry key. *closekey Closes a registry key. *setregkey Sets a registry key setting. *getregkey Gets a registry key setting. *getkeyvalue Obtains a value from a registry key. *setkeyvalue Sets a key value. *deletekey Deletes a registry key. *enumoptions Enumerates through all entries for a key and populates array. *iskey Checks to see if a key exists. *enumkeys Enumerates through a registry key. *enumkeyvalues Enumerates through values of a registry key *deletekeyvalue Deletes value from registry key. 5 Ƶ%UZ(TwinCC Z7QFORMforms\repbalcoJUPNOMFORM PRINCIPALVOBARRA ITEMCOUNTFORMSClick,1!1)h OO %DNUD T%C m.cINIFilebCZ T&%C  BTCC   T( 4T CC  )T C   \T  BU ASECTIONSCSECTIONCINIFILE CINIVALUE NTOTENTRIESINLASTPOSTHIS GETINIENTRYNTMPPOSZ TCtTC % b B %  T T CX%C *T C  C > 0T C  C >  % 2 BT C  = BU CVALUECSECTIONCENTRYCINIFILECBUFFERNBUFSIZENERRNUM NTOTPARMSTHIS LOADINIFUNCS GETWININI GETPRIVATEINITC% I B %C ~ TC   &TC   BC  6U CVALUECSECTIONCENTRYCINIFILENERRNUMTHIS LOADINIFUNCS WRITEWININIWRITEPRIVATEINIW% BG|GetPrivateProfileStringWin32APIQ GetPrivateINI%~ B:|GetProfileStringWin32APIQ GetWinINI:|WriteProfileStringWin32APIQ WriteWinINIG|WritePrivateProfileStringWin32APIQWritePrivateINITa BU THIS LLOADEDINISGETPRIVATEPROFILESTRINGWIN32API GETPRIVATEINI LHADERRORGETPROFILESTRING GETWININIWRITEPROFILESTRING WRITEWININIWRITEPRIVATEPROFILESTRINGWRITEPRIVATEINI getinisection, getinientry writeinientry loadinifuncs11AbAb1A3131A3A"A2A31s1AbA3AsAs27YC*g:?7] W)O containerRibbonbuttonv2panel7.Ribbongroup1PROCEDURE Click pnomform = "win"+alltrim(str(principalv.obarra.itemcount + 1,10,0)) public (pnomform) as form do form forms\repbalco name (pnomform) ENDPROC  ribbonbuttonv foxribbon.vcx containerRibbonbuttonv1+'PROCEDURE loadregfuncs * Loads funtions needed for Registry LOCAL nHKey,cSubKey,nResult LOCAL hKey,iValue,lpszValue,lpcchValue,lpdwType,lpbData,lpcbData LOCAL lpcStr,lpszVal,nLen,lpdwReserved LOCAL lpszValueName,dwReserved,fdwType LOCAL iSubKey,lpszName,cchName IF THIS.lLoadedDLLs RETURN ERROR_SUCCESS ENDIF DECLARE Integer RegOpenKey IN Win32API ; Integer nHKey, String @cSubKey, Integer @nResult IF THIS.lhaderror && error loading library RETURN -1 ENDIF DECLARE Integer RegCreateKey IN Win32API ; Integer nHKey, String @cSubKey, Integer @nResult DECLARE Integer RegDeleteKey IN Win32API ; Integer nHKey, String @cSubKey DECLARE Integer RegDeleteValue IN Win32API ; Integer nHKey, String cSubKey DECLARE Integer RegCloseKey IN Win32API ; Integer nHKey DECLARE Integer RegSetValueEx IN Win32API ; Integer hKey, String lpszValueName, Integer dwReserved,; Integer fdwType, String lpbData, Integer cbData DECLARE Integer RegQueryValueEx IN Win32API ; Integer nHKey, String lpszValueName, Integer dwReserved,; Integer @lpdwType, String @lpbData, Integer @lpcbData DECLARE Integer RegEnumKey IN Win32API ; Integer nHKey,Integer iSubKey, String @lpszName, Integer @cchName DECLARE Integer RegEnumKeyEx IN Win32API ; Integer nHKey,Integer iSubKey, String @lpszName, Integer @cchName,; Integer dwReserved,String @lpszName, Integer @cchName,String @cchName DECLARE Integer RegEnumValue IN Win32API ; Integer hKey, Integer iValue, String @lpszValue, ; Integer @lpcchValue, Integer lpdwReserved, Integer @lpdwType, ; String @lpbData, Integer @lpcbData THIS.lLoadedDLLs = .T. * Need error check here RETURN ERROR_SUCCESS ENDPROC PROCEDURE openkey * Opens a registry key LPARAMETER cLookUpKey,nRegKey,lCreateKey LOCAL nSubKey,nErrCode,nPCount,lSaveCreateKey nSubKey = 0 nPCount = PCOUNT() IF TYPE("m.nRegKey") # "N" OR EMPTY(m.nRegKey) m.nRegKey = HKEY_CLASSES_ROOT ENDIF * Load API functions nErrCode = THIS.LoadRegFuncs() IF m.nErrCode # ERROR_SUCCESS RETURN m.nErrCode ENDIF lSaveCreateKey = THIS.lCreateKey IF m.nPCount>2 AND TYPE("m.lCreateKey") = "L" THIS.lCreateKey = m.lCreateKey ENDIF IF THIS.lCreateKey * Try to open or create registry key nErrCode = RegCreateKey(m.nRegKey,m.cLookUpKey,@nSubKey) ELSE * Try to open registry key nErrCode = RegOpenKey(m.nRegKey,m.cLookUpKey,@nSubKey) ENDIF THIS.lCreateKey = m.lSaveCreateKey IF nErrCode # ERROR_SUCCESS RETURN m.nErrCode ENDIF THIS.nCurrentKey = m.nSubKey RETURN ERROR_SUCCESS ENDPROC PROCEDURE closekey * Closes a registry key =RegCloseKey(THIS.nCurrentKey) THIS.nCurrentKey =0 ENDPROC PROCEDURE setregkey * This routine sets a registry key setting * ex. THIS.SetRegKey("ResWidth","640",; * "Software\Microsoft\VisualFoxPro\6.0\Options",; * HKEY_CURRENT_USER) LPARAMETER cOptName,cOptVal,cKeyPath,nUserKey,lCreateKey LOCAL iPos,cOptKey,cOption,nErrNum iPos = 0 cOption = "" nErrNum = ERROR_SUCCESS * Open registry key m.nErrNum = THIS.OpenKey(m.cKeyPath,m.nUserKey,m.lCreateKey) IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF * Set Key value nErrNum = THIS.SetKeyValue(m.cOptName,m.cOptVal) * Close registry key THIS.CloseKey() &&close key RETURN m.nErrNum ENDPROC PROCEDURE getregkey * This routine gets a registry key setting * ex. THIS.GetRegKey("ResWidth",@cValue,; * "Software\Microsoft\VisualFoxPro\4.0\Options",; * HKEY_CURRENT_USER) LPARAMETER cOptName,cOptVal,cKeyPath,nUserKey LOCAL iPos,cOption,nErrNum iPos = 0 cOption = "" nErrNum = ERROR_SUCCESS * Open registry key m.nErrNum = THIS.OpenKey(m.cKeyPath,m.nUserKey) IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF * Get the key value nErrNum = THIS.GetKeyValue(cOptName,@cOptVal) * Close registry key THIS.CloseKey() &&close key RETURN m.nErrNum ENDPROC PROCEDURE getkeyvalue * Obtains a value from a registry key * Note: this routine only handles Data strings (REG_SZ) LPARAMETER cValueName,cKeyValue LOCAL lpdwReserved,lpdwType,lpbData,lpcbData,nErrCode STORE 0 TO lpdwReserved,lpdwType STORE SPACE(256) TO lpbData STORE LEN(m.lpbData) TO m.lpcbData DO CASE CASE TYPE("THIS.nCurrentKey")#'N' OR THIS.nCurrentKey = 0 RETURN ERROR_BADKEY CASE TYPE("m.cValueName") #"C" RETURN ERROR_BADPARM ENDCASE m.nErrCode=RegQueryValueEx(THIS.nCurrentKey,m.cValueName,; m.lpdwReserved,@lpdwType,@lpbData,@lpcbData) * Check for error IF m.nErrCode # ERROR_SUCCESS RETURN m.nErrCode ENDIF * Make sure we have a data string data type IF m.lpdwType # REG_SZ AND m.lpdwType # REG_EXPAND_SZ RETURN ERROR_NONSTR_DATA ENDIF m.cKeyValue = LEFT(m.lpbData,m.lpcbData-1) RETURN ERROR_SUCCESS ENDPROC PROCEDURE setkeyvalue * This routine sets a key value * Note: this routine only handles data strings (REG_SZ) LPARAMETER cValueName,cValue LOCAL nValueSize,nErrCode DO CASE CASE TYPE("THIS.nCurrentKey")#'N' OR THIS.nCurrentKey = 0 RETURN ERROR_BADKEY CASE TYPE("m.cValueName") #"C" OR TYPE("m.cValue")#"C" RETURN ERROR_BADPARM *!* CASE EMPTY(m.cValueName) *!* RETURN ERROR_BADPARM ENDCASE * Make sure we null terminate this guy cValue = m.cValue+CHR(0) nValueSize = LEN(m.cValue) * Set the key value here m.nErrCode = RegSetValueEx(THIS.nCurrentKey,m.cValueName,0,; REG_SZ,m.cValue,m.nValueSize) * Check for error IF m.nErrCode # ERROR_SUCCESS RETURN m.nErrCode ENDIF RETURN ERROR_SUCCESS ENDPROC PROCEDURE deletekey * This routine deletes a Registry Key LPARAMETER nUserKey,cKeyPath LOCAL nErrNum nErrNum = ERROR_SUCCESS * Delete key m.nErrNum = RegDeleteKey(m.nUserKey,m.cKeyPath) RETURN m.nErrNum ENDPROC PROCEDURE enumoptions * Enumerates through all entries for a key and populates array LPARAMETER aRegOpts,cOptPath,nUserKey,lEnumKeys LOCAL iPos,cOption,nErrNum iPos = 0 cOption = "" nErrNum = ERROR_SUCCESS IF PCOUNT()<4 OR TYPE("m.lEnumKeys") # "L" lEnumKeys = .F. ENDIF * Open key m.nErrNum = THIS.OpenKey(m.cOptPath,m.nUserKey) IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF * Enumerate through keys IF m.lEnumKeys * Enumerate and get key names nErrNum = THIS.EnumKeys(@aRegOpts) ELSE * Enumerate and get all key values nErrNum = THIS.EnumKeyValues(@aRegOpts) ENDIF * Close key THIS.CloseKey() &&close key RETURN m.nErrNum ENDPROC PROCEDURE iskey * Checks to see if a key exists LPARAMETER cKeyName,nRegKey LOCAL nErrNum * Open extension key nErrNum = THIS.OpenKey(m.cKeyName,m.nRegKey) IF m.nErrNum = ERROR_SUCCESS * Close extension key THIS.CloseKey() ENDIF RETURN m.nErrNum = ERROR_SUCCESS ENDPROC PROCEDURE enumkeys LPARAMETERS aKeyNames LOCAL nKeyEntry,cNewKey,cbuf,nbuflen,cRetTime, nKeySize, nErrCode nKeyEntry = 0 DIMENSION aKeyNames[1] DO WHILE .T. nKeySize = 0 cNewKey = SPACE(100) nKeySize = LEN(m.cNewKey) cbuf=space(100) nbuflen=len(m.cbuf) cRetTime=space(100) m.nErrCode = RegEnumKeyEx(THIS.nCurrentKey,m.nKeyEntry,@cNewKey,@nKeySize,0,@cbuf,@nbuflen,@cRetTime) DO CASE CASE m.nErrCode = ERROR_EOF EXIT CASE m.nErrCode # ERROR_SUCCESS EXIT ENDCASE cNewKey = ALLTRIM(m.cNewKey) cNewKey = LEFT(m.cNewKey,LEN(m.cNewKey)-1) IF !EMPTY(aKeyNames[1]) DIMENSION aKeyNames[ALEN(aKeyNames)+1] ENDIF aKeyNames[ALEN(aKeyNames)] = m.cNewKey nKeyEntry = m.nKeyEntry + 1 ENDDO IF m.nErrCode = ERROR_EOF AND m.nKeyEntry # 0 m.nErrCode = ERROR_SUCCESS ENDIF RETURN m.nErrCode ENDPROC PROCEDURE enumkeyvalues * Enumerates through values of a registry key LPARAMETER aKeyValues LOCAL lpszValue,lpcchValue,lpdwReserved LOCAL lpdwType,lpbData,lpcbData LOCAL nErrCode,nKeyEntry STORE 0 TO nKeyEntry IF TYPE("THIS.nCurrentKey")#'N' OR THIS.nCurrentKey = 0 RETURN ERROR_BADKEY ENDIF * Sorry, Win32s does not support this one! IF THIS.nCurrentOS = OS_W32S RETURN ERROR_BADPLAT ENDIF DO WHILE .T. STORE 0 TO lpdwReserved,lpdwType,nErrCode STORE SPACE(256) TO lpbData, lpszValue STORE LEN(lpbData) TO m.lpcchValue STORE LEN(lpszValue) TO m.lpcbData nErrCode=RegEnumValue(THIS.nCurrentKey,m.nKeyEntry,@lpszValue,; @lpcchValue,m.lpdwReserved,@lpdwType,@lpbData,@lpcbData) DO CASE CASE m.nErrCode = ERROR_EOF EXIT CASE m.nErrCode # ERROR_SUCCESS EXIT ENDCASE nKeyEntry = m.nKeyEntry + 1 * Set array values DIMENSION aKeyValues[m.nKeyEntry,2] aKeyValues[m.nKeyEntry,1] = LEFT(m.lpszValue,m.lpcchValue) DO CASE CASE lpdwType = REG_SZ aKeyValues[m.nKeyEntry,2] = LEFT(m.lpbData,m.lpcbData-1) CASE lpdwType = REG_EXPAND_SZ AND !THIS.lDisAllowExpanded aKeyValues[m.nKeyEntry,2] = LEFT(m.lpbData,m.lpcbData-1) CASE lpdwType = REG_BINARY * Don't support binary aKeyValues[m.nKeyEntry,2] = REG_BINARY_LOC CASE lpdwType = REG_DWORD * You will need to use ASC() to check values here. aKeyValues[m.nKeyEntry,2] = LEFT(m.lpbData,m.lpcbData-1) OTHERWISE aKeyValues[m.nKeyEntry,2] = REG_UNKNOWN_LOC ENDCASE ENDDO IF m.nErrCode = ERROR_EOF AND m.nKeyEntry#0 m.nErrCode = ERROR_SUCCESS ENDIF RETURN m.nErrCode ENDPROC PROCEDURE deletekeyvalue LPARAMETER cOptName,cKeyPath,nUserKey LOCAL cOption,nErrNum cOption = cOptName nErrNum = ERROR_SUCCESS * Open key m.nErrNum = THIS.OpenKey(m.cKeyPath,m.nUserKey) IF m.nErrNum # ERROR_SUCCESS RETURN m.nErrNum ENDIF * Delete the key value m.nErrNum = RegDeleteValue(THIS.nCurrentKey,m.cOption) * Close key THIS.CloseKey() && close key RETURN m.nErrNum ENDPROC PROCEDURE Destroy IF !THIS.lHasDllLoaded CLEAR DLLS RegOpenKey CLEAR DLLS RegCreateKey CLEAR DLLS RegDeleteKey CLEAR DLLS RegDeleteValue CLEAR DLLS RegCloseKey CLEAR DLLS RegSetValueEx CLEAR DLLS RegQueryValueEx CLEAR DLLS RegEnumKey CLEAR DLLS RegEnumKeyEx CLEAR DLLS RegEnumValue ENDIF ENDPROC PROCEDURE Error LPARAMETERS nError, cMethod, nLine THIS.lhaderror = .T. =MESSAGEBOX(MESSAGE()) ENDPROC PROCEDURE Init LOCAL laTmpDLLs,lnDlls DIMENSION laTmpDLLs[1] THIS.nUserKey = HKEY_CURRENT_USER THIS.cVFPOptPath = VFP_OPTIONS_KEY1 + _VFP.VERSION + VFP_OPTIONS_KEY2 DO CASE CASE _DOS OR _UNIX OR _MAC RETURN .F. CASE ATC("Windows 3",OS(1)) # 0 THIS.nCurrentOS = OS_W32S CASE ATC("Windows NT",OS(1)) # 0 THIS.nCurrentOS = OS_NT THIS.cRegDLLFile = DLL_ADVAPI_NT THIS.cINIDLLFile = DLL_KERNEL_NT THIS.cODBCDLLFile = DLL_ODBC_NT CASE VAL(OS(3)) >= 5 * Handle W2K, XP THIS.nCurrentOS = OS_NT THIS.cRegDLLFile = DLL_ADVAPI_NT THIS.cINIDLLFile = DLL_KERNEL_NT THIS.cODBCDLLFile = DLL_ODBC_NT OTHERWISE * Windows 95 THIS.nCurrentOS = OS_WIN95 THIS.cRegDLLFile = DLL_ADVAPI_WIN95 THIS.cINIDLLFile = DLL_KERNEL_WIN95 THIS.cODBCDLLFile = DLL_ODBC_WIN95 ENDCASE * Check if DLLs already loaded so we don't unload when done. lnDlls = ADLLS(laTmpDLLs) IF lnDlls > 0 IF ASCAN(laTmpDLLs,"RegOpenKey",-1,-1,-1,1)#0 THIS.lHasDllLoaded=.T. ENDIF ENDIF ENDPROC s ZZ%! UU     %x B%| RegOpenKeyWin32API% B'| RegCreateKeyWin32API$| RegDeleteKeyWin32API%|RegDeleteValueWin32API | RegCloseKeyWin32API,| RegSetValueExWin32API1|RegQueryValueExWin32API'| RegEnumKeyWin32API4| RegEnumKeyExWin32API4| RegEnumValueWin32APITa BU"NHKEYCSUBKEYNRESULTHKEYIVALUE LPSZVALUE LPCCHVALUELPDWTYPELPBDATALPCBDATALPCSTRLPSZVALNLEN LPDWRESERVED LPSZVALUENAME DWRESERVEDFDWTYPEISUBKEYLPSZNAMECCHNAMETHIS LLOADEDDLLS REGOPENKEYWIN32API LHADERROR REGCREATEKEY REGDELETEKEYREGDELETEVALUE REGCLOSEKEY REGSETVALUEEXREGQUERYVALUEEX REGENUMKEY REGENUMKEYEX REGENUMVALUE T TCt(%C m.nRegKeybNC  {T  TC%  B T-% C m.lCreateKeybL T %3TC   YTC   T % B T   BU CLOOKUPKEYNREGKEY LCREATEKEYNSUBKEYNERRCODENPCOUNTLSAVECREATEKEYTHIS LOADREGFUNCS REGCREATEKEY REGOPENKEY NCURRENTKEY#CTU REGCLOSEKEYTHIS NCURRENTKEY T T T%T C    %  B TC  C B U COPTNAMECOPTVALCKEYPATHNUSERKEY LCREATEKEYIPOSCOPTKEYCOPTIONNERRNUMTHISOPENKEY SETKEYVALUECLOSEKEY T T TT C  %  B TC C B U COPTNAMECOPTVALCKEYPATHNUSERKEYIPOSCOPTIONNERRNUMTHISOPENKEY GETKEYVALUECLOSEKEYs J(JCX(JC >(  Hc2 CTHIS.nCurrentKeybN   B C m.cValueNamebC B.T C  %  B  %   G BT C  = BU CVALUENAME CKEYVALUE LPDWRESERVEDLPDWTYPELPBDATALPCBDATANERRCODETHIS NCURRENTKEYREGQUERYVALUEEX%   H#2 CTHIS.nCurrentKeybN  _ B6 C m.cValueNamebCCm.cValuebC  BT C TC >.T C   %  B  BU CVALUENAMECVALUE NVALUESIZENERRCODETHIS NCURRENTKEY REGSETVALUEEXI  TT C  B UNUSERKEYCKEYPATHNERRNUM REGDELETEKEY# T T T*%Ct C m.lEnumKeysbL ~ T-T C  %  B % TC TC  C B U AREGOPTSCOPTPATHNUSERKEY LENUMKEYSIPOSCOPTIONNERRNUMTHISOPENKEYENUMKEYS ENUMKEYVALUESCLOSEKEYe TC % O CB UCKEYNAMENREGKEYNERRNUMTHISOPENKEYCLOSEKEY T  +a TTCdXTC >TCdXTC >TCdX3T C  H ! !TC TC C >=%CC pCTC T !%   T  B U AKEYNAMES NKEYENTRYCNEWKEYCBUFNBUFLENCRETTIMENKEYSIZENERRCODE REGENUMKEYEXTHIS NCURRENTKEY(  J(2%CTHIS.nCurrentKeybN  y B%  B +aJ(JCX(JC>( JC>( 4TC   H7f O! f!T  $T C  = H (T C  =  @(T C  = t#T *Binary* (T C  =2)T *Unknown type*!%   T  B U AKEYVALUES LPSZVALUE LPCCHVALUE LPDWRESERVEDLPDWTYPELPBDATALPCBDATANERRCODE NKEYENTRYTHIS NCURRENTKEY NCURRENTOS REGENUMVALUELDISALLOWEXPANDED  T TT C  % q B T C  C B U COPTNAMECKEYPATHNUSERKEYCOPTIONNERRNUMTHISOPENKEYREGDELETEVALUE NCURRENTKEYCLOSEKEY% V REGOPENKEYV REGCREATEKEYV REGDELETEKEYVREGDELETEVALUEV REGCLOSEKEYV REGSETVALUEEXVREGQUERYVALUEEXV REGENUMKEYV REGENUMKEYEXV REGENUMVALUEUTHIS LHASDLLLOADED+Ta CCExUNERRORCMETHODNLINETHIS LHADERROR  T BT Software\Microsoft\VisualFoxPro\C\Options Hz/ 24 3 B-! C Windows 3CJT" C Windows NTCJNTT ADVAPI32.DLLT KERNEL32.DLLT  ODBC32.DLL CCJgTT ADVAPI32.DLLT KERNEL32.DLLT  ODBC32.DLL2/TT ADVAPI32.DLLT KERNEL32.DLLT  ODBC32.DLLTC%1%C RegOpenKeyT aU LATMPDLLSLNDLLSTHISNUSERKEY CVFPOPTPATHVERSION NCURRENTOS CREGDLLFILE CINIDLLFILE CODBCDLLFILE LHASDLLLOADED loadregfuncs,openkeyclosekey3 setregkeyz getregkey getkeyvalue setkeyvalue deletekeyK enumoptions iskey]enumkeys enumkeyvaluesQdeletekeyvalue Destroy6Error:Init11ASAsCSsDE32qA1A!AA"A"33u1S1A351A3r1!A3AA3!aCS3A3q32A1ARRA3q1A3q2AA1AAAAA1AA3r"ACARACAA1AA2SA2AAA31A31QQqAa1QQA231!q!QA#AA2 :4/ ~ c7 iD 5QWfva| '/N#:#p%y%&&'9'+)Z l%-1U  T/%C m.cExtensionbC C > d BT . TC %  B TC C %  B BC U CEXTENSIONCEXTNKEYCAPPKEYLSERVERNERRNUMCOPTNAMETHISOPENKEY GETKEYVALUECLOSEKEYGETAPPLICATION  T!TC \CurVer% j B TC C %  B BC U CCLASSCEXTNKEYCAPPKEYLSERVERNERRNUMCOPTNAMETHISOPENKEY GETKEYVALUECLOSEKEYGETAPPLICATION   T&%C m.lServerbL  |/T\Protocol\StdFileEditing\Server#T\Shell\Open\CommandT C %  B TC C B U CEXTNKEYCAPPKEYLSERVERNERRNUMCOPTNAMETHIS CAPPPATHKEYOPENKEY GETKEYVALUECLOSEKEY getapppath,getlatestversiongetapplication13Aas1A2A311A2A3c1A1A2 !8)panel7 ribbonpagepanel7Pixels!Arial, 0, 9, 5, 15, 12, 32, 3, 0 panel7.Ribbongroup1PROCEDURE Click pnomform = "win"+alltrim(str(principalv.obarra.itemcount + 1,10,0)) public (pnomform) as form do form forms\repeeff with "1" name (pnomform) ENDPROC  ribbonbuttonv foxribbon.vcx containerRibbonbuttonv3panel7.Ribbongroup1PROCEDURE Click pnomform = "win"+alltrim(str(principalv.obarra.itemcount + 1,10,0)) public (pnomform) as form do form forms\reppla name (pnomform) ENDPROC hTop = 3 Left = 71 TabIndex = 3 cskipforexp = empty(pruc) or substr(pmacceso,90,1) = "0" helptitle = Ejecucin de plantillas helptxt_id = helptxt = Ejecucion de E.E.F.F y Ratios Financieros Name = "Ribbonbuttonv1" Image1.Picture = images\ejecutar.png Image1.Stretch = 2 Image1.Height = 32 Image1.Width = 32 Image1.Name = "Image1" xShape2.Name = "xShape2" Shape1.Name = "Shape1" Command1.Name = "Command1" Image2.Name = "Image2" Ribbonlabel1.Caption = "Ejecucin" Ribbonlabel1.Name = "Ribbonlabel1" Ribbonlabel2.Name = "Ribbonlabel2" Marlett.Left = 54 Marlett.Top = 54 Marlett.Name = "Marlett" panel7.Ribbongroup2Ribbonbuttonv1 container foxribbon.vcx ribbonbuttonv ribbonbuttonv foxribbon.vcx containerRibbonbuttonv4panel7.Ribbongroup1PROCEDURE Click pnomform = "win"+alltrim(str(principalv.obarra.itemcount + 1,10,0)) public (pnomform) as form do form forms\rephoja name (pnomform) ENDPROC  ribbonbuttonv foxribbon.vcxPROCEDURE Click pnomform = "win"+alltrim(str(principalv.obarra.itemcount + 1,10,0)) public (pnomform) as form do form forms\manpla name (pnomform) ENDPROC \Top = 3 Left = 3 TabIndex = 3 cskipforexp = empty(pruc) or substr(pmacceso,89,1) = "0" helptitle = Diseo de plantillas helptxt_id = helptxt = Diseo de E.E.F.F y Ratios Financieros Name = "Ribbonbuttonv3" Image1.Picture = images\diseno.png Image1.Stretch = 2 Image1.Height = 32 Image1.Width = 32 Image1.Name = "Image1" xShape2.Name = "xShape2" Shape1.Name = "Shape1" Command1.Name = "Command1" Image2.Name = "Image2" Ribbonlabel1.Caption = "Diseo" Ribbonlabel1.Name = "Ribbonlabel1" Ribbonlabel2.Name = "Ribbonlabel2" Marlett.Left = 54 Marlett.Top = 54 Marlett.Name = "Marlett" panel7.Ribbongroup2Ribbonbuttonv3 container foxribbon.vcx ribbonbuttonvhTop = 2 Left = 443 Width = 140 Height = 89 Name = "Ribbongroup2" Shape1.Name = "Shape1" Ribbonlabel1.Caption = "Plantillas" Ribbonlabel1.TabIndex = 4 Ribbonlabel1.Name = "Ribbonlabel1" Image1.Name = "Image1" _Shape2.Name = "_Shape2" Ribbonbuttongroup1.Image1.Height = 32 Ribbonbuttongroup1.Image1.Width = 32 Ribbonbuttongroup1.Image1.Name = "Image1" Ribbonbuttongroup1.xShape2.Name = "xShape2" Ribbonbuttongroup1.Shape1.Name = "Shape1" Ribbonbuttongroup1.Command1.Name = "Command1" Ribbonbuttongroup1.Image2.Name = "Image2" Ribbonbuttongroup1.Ribbonlabel1.Name = "Ribbonlabel1" Ribbonbuttongroup1.Ribbonlabel2.Name = "Ribbonlabel2" Ribbonbuttongroup1.Marlett.Name = "Marlett" Ribbonbuttongroup1.x1.Name = "x1" Ribbonbuttongroup1.x2.Name = "x2" Ribbonbuttongroup1.z1.Name = "z1" Ribbonbuttongroup1.z2.Name = "z2" Ribbonbuttongroup1.x6.Name = "x6" Ribbonbuttongroup1.x5.Name = "x5" Ribbonbuttongroup1.x4.Name = "x4" Ribbonbuttongroup1.x3.Name = "x3" Ribbonbuttongroup1.z3.Name = "z3" Ribbonbuttongroup1.z4.Name = "z4" Ribbonbuttongroup1.TabIndex = 5 Ribbonbuttongroup1.Name = "Ribbonbuttongroup1" panel7 Ribbongroup2 container foxribbon.vcx ribbongroup containerRibbonbuttonv5panel7.Ribbongroup1PROCEDURE Click pnomform = "win"+alltrim(str(principalv.obarra.itemcount + 1,10,0)) public (pnomform) as form do form forms\repdescu name (pnomform) ENDPROC  ribbonbuttonv foxribbon.vcx containerRibbonbuttonv6PROCEDURE Click pnomform = "win"+alltrim(str(principalv.obarra.itemcount + 1,10,0)) public (pnomform) as form do form forms\repbalpar name (pnomform) ENDPROC Top = 3 Left = 361 Width = 75 Height = 66 TabIndex = 4 helptxt = Reporta el Balance de Comprobacin por partidas helptitle = Descuadres cskipforexp = empty(pruc) or substr(pmacceso,88,1) = "0" Name = "Ribbonbuttonv6" Image1.Picture = images\balancepar.png Image1.Stretch = 2 Image1.Height = 32 Image1.Left = 21 Image1.Width = 32 Image1.Name = "Image1" xShape2.Name = "xShape2" Shape1.Name = "Shape1" Command1.Name = "Command1" Image2.Name = "Image2" Ribbonlabel1.Caption = "Balance por Partidas" Ribbonlabel1.Height = 28 Ribbonlabel1.Left = 2 Ribbonlabel1.Top = 37 Ribbonlabel1.Width = 70 Ribbonlabel1.Name = "Ribbonlabel1" Ribbonlabel2.Name = "Ribbonlabel2" Marlett.Name = "Marlett" panel7.Ribbongroup1!Top = 3 Left = 3 TabIndex = 1 helptxt = Reporta el Balance General helptitle = Balance General cskipforexp = empty(pruc) or substr(pmacceso,82,1) = "0" Name = "Ribbonbuttonv1" Image1.Picture = images\balance.png Image1.Stretch = 2 Image1.Height = 32 Image1.Width = 32 Image1.Name = "Image1" xShape2.Name = "xShape2" Shape1.Name = "Shape1" Command1.Name = "Command1" Image2.Name = "Image2" Ribbonlabel1.Caption = "Balance General" Ribbonlabel1.Name = "Ribbonlabel1" Ribbonlabel2.Name = "Ribbonlabel2" Marlett.Name = "Marlett" Top = 3 Left = 284 Width = 75 Height = 66 TabIndex = 4 helptxt = Reporta descaudres en la Hoja de trabajo helptitle = Descuadres cskipforexp = empty(pruc) or substr(pmacceso,87,1) = "0" Name = "Ribbonbuttonv5" Image1.Picture = images\descuadre.png Image1.Stretch = 2 Image1.Height = 32 Image1.Left = 21 Image1.Width = 32 Image1.Name = "Image1" xShape2.Name = "xShape2" Shape1.Name = "Shape1" Command1.Name = "Command1" Image2.Name = "Image2" Ribbonlabel1.Caption = "Descuadres" Ribbonlabel1.Height = 28 Ribbonlabel1.Left = 2 Ribbonlabel1.Top = 37 Ribbonlabel1.Width = 70 Ribbonlabel1.Name = "Ribbonlabel1" Ribbonlabel2.Name = "Ribbonlabel2" Marlett.Name = "Marlett" B ))I%h U/ !BCUCOPTNAMECOPTVALTHIS SETREGKEY CVFPOPTPATHNUSERKEY/ !BCUCOPTNAMECOPTVALTHIS GETREGKEY CVFPOPTPATHNUSERKEY(BC-UAFOXOPTSTHIS ENUMOPTIONS CVFPOPTPATHNUSERKEY setfoxoption, getfoxoptionenumfoxoptions133q2}+ )) Top = 3 Left = 139 TabIndex = 3 helptxt = Reporta la Hoja de trabajo helptitle = Hoja de trabajo cskipforexp = empty(pruc) or substr(pmacceso,85,1) = "0" Name = "Ribbonbuttonv4" Image1.Picture = images\hoja.png Image1.Stretch = 2 Image1.Height = 32 Image1.Width = 32 Image1.Name = "Image1" xShape2.Name = "xShape2" Shape1.Name = "Shape1" Command1.Name = "Command1" Image2.Name = "Image2" Ribbonlabel1.Caption = "Hoja de Trabajo" Ribbonlabel1.Name = "Ribbonlabel1" Ribbonlabel2.Name = "Ribbonlabel2" Marlett.Name = "Marlett" \Top = 3 Left = 71 TabIndex = 2 helptxt = Reporta el Estado de Prdidas y Ganancias por Naturaleza y Funcin helptitle = Ganacias y prdidas path_form_menu = forms\meneegp Name = "Ribbonbuttonv3" Image1.Picture = images\ganper.png Image1.Stretch = 2 Image1.Height = 32 Image1.Width = 32 Image1.Name = "Image1" xShape2.Name = "xShape2" Shape1.Name = "Shape1" Command1.Name = "Command1" Image2.Name = "Image2" Ribbonlabel1.Caption = "Ganacias y Prdidas" Ribbonlabel1.Name = "Ribbonlabel1" Ribbonlabel2.Name = "Ribbonlabel2" Marlett.Left = 54 Marlett.Top = 54 Marlett.Name = "Marlett" cTop = 2 Left = 2 Width = 439 Height = 89 Name = "Ribbongroup1" Shape1.Name = "Shape1" Ribbonlabel1.Caption = "General" Ribbonlabel1.TabIndex = 5 Ribbonlabel1.Name = "Ribbonlabel1" Image1.Name = "Image1" _Shape2.Name = "_Shape2" RIBBONBUTTONGROUP1.Image1.Height = 32 RIBBONBUTTONGROUP1.Image1.Width = 32 RIBBONBUTTONGROUP1.Image1.Name = "Image1" RIBBONBUTTONGROUP1.xShape2.Name = "xShape2" RIBBONBUTTONGROUP1.Shape1.Name = "Shape1" RIBBONBUTTONGROUP1.Command1.Name = "Command1" RIBBONBUTTONGROUP1.Image2.Name = "Image2" RIBBONBUTTONGROUP1.Ribbonlabel1.Name = "Ribbonlabel1" RIBBONBUTTONGROUP1.Ribbonlabel2.Name = "Ribbonlabel2" RIBBONBUTTONGROUP1.Marlett.Name = "Marlett" RIBBONBUTTONGROUP1.X1.Name = "X1" RIBBONBUTTONGROUP1.X2.Name = "X2" RIBBONBUTTONGROUP1.Z1.Name = "Z1" RIBBONBUTTONGROUP1.Z2.Name = "Z2" RIBBONBUTTONGROUP1.X6.Name = "X6" RIBBONBUTTONGROUP1.X5.Name = "X5" RIBBONBUTTONGROUP1.X4.Name = "X4" RIBBONBUTTONGROUP1.X3.Name = "X3" RIBBONBUTTONGROUP1.Z3.Name = "Z3" RIBBONBUTTONGROUP1.Z4.Name = "Z4" RIBBONBUTTONGROUP1.TabIndex = 6 RIBBONBUTTONGROUP1.Name = "RIBBONBUTTONGROUP1" Top = 3 Left = 207 Width = 75 Height = 66 TabIndex = 4 helptxt = Reporta el Balance de Comprobacin helptitle = Balance de Comprobacin cskipforexp = empty(pruc) or substr(pmacceso,86,1) = "0" Name = "Ribbonbuttonv2" Image1.Picture = images\comproba.png Image1.Stretch = 2 Image1.Height = 32 Image1.Left = 21 Image1.Width = 32 Image1.Name = "Image1" xShape2.Name = "xShape2" Shape1.Name = "Shape1" Command1.Name = "Command1" Image2.Name = "Image2" Ribbonlabel1.Caption = "Balance de Comprobacin" Ribbonlabel1.Height = 28 Ribbonlabel1.Left = 2 Ribbonlabel1.Top = 37 Ribbonlabel1.Width = 70 Ribbonlabel1.Name = "Ribbonlabel1" Ribbonlabel2.Name = "Ribbonlabel2" Marlett.Name = "Marlett"  }}ђ%KnU% B%C9 B     -|W SQLDrivers% B2|WSQLDataSourcesTa BUTHIS LLOADEDODBCS CODBCDLLFILEHENV FDIRECTION SZDRIVERDESCCBDRIVERDESCMAX PCBDRIVERDESCSZDRIVERATTRIBUTES CBDRVRATTRMAX PCBDRVRATTRSZDSNCBDSNMAXPCBDSN SZDESCRIPTIONCBDESCRIPTIONMAXPCBDESCRIPTION SQLDRIVERS LHADERRORSQLDATASOURCES! 0TCCm.lDataSourcesbL -6TC %  B TCC ]g%C B#C 6T +aTCdXTCdX T T% y-TC d -TC dd  H  d T!   !2 %CC x% OCtCTC .TCC C >=%  TC .TCC C >= BU ADRVRS LDATASOURCESNODBCENVNRETVALDSNDSNDESCMDSNMDESCTHIS LOADODBCFUNCSSQLDATASOURCES SQLDRIVERSa .TSoftware\ODBC\ODBCINST.INI\ BC  -U ADRVROPTS CODBCDRIVER CSOURCEKEYTHIS ENUMOPTIONS[ (TSoftware\ODBC\ODBC.INI\BC  -U ADRVROPTS CDATASOURCE CSOURCEKEYTHIS ENUMOPTIONS loadodbcfuncs, getodbcdrvrsH enumodbcdrvrs enumodbcdata~1A$A21A%31A#A21A1AAAAAAAA3q3q2 #A w eF > l)}