VFP umožňuje dvojí způsob změny pořadí objektů během návrhu formuláře či třídy:
Celkový postup je:
DECLARE INTEGER RegSetValueEx IN ADVAPI32.DLL; INTEGER,STRING,INTEGER,INTEGER,STRING,INTEGER DECLARE INTEGER RegOpenKeyEx in ADVAPI32.DLL INTEGER, STRING,INTEGER,INTEGER,INTEGER @nKeyHandle DECLARE INTEGER RegCloseKey in ADVAPI32.DLL INTEGER * Native Error Codes #DEFINE ERROR_SUCCESS 0 * REGAPI Error Codes #DEFINE REGAPI_Other -1 #DEFINE REGAPI_SUCCESS ERROR_SUCCESS #DEFINE SECURITY_ACCESS_MASK 983103 && SAM value KEY_ALL_ACCESS #DEFINE REG_SZ 1 && Unicode nul terminated string #DEFINE HKEY_CURRENT_USER 0x80000001 *************************************************************************************** * Zapíše hodnotu do klíče *************************************************************************************** PROCEDURE API_RegSetValueEx(liHKEY,lcValue,liType,lcData) * liHKEY - Handle klíče * lcValue - Název hodnoty * liType - Typ hodnoty * lcData - Data hodnoty LOCAL liErr,liReserved,liData liReserved=0 liData=LEN(lcData) liErr=RegSetValueEx(liHKEY,lcValue,liReserved,liType,lcData,liData) RETURN IIF(liErr=ERROR_SUCCESS,REGAPI_SUCCESS,REGAPI_Other) *************************************************************************************** * Otevře daný klíč *************************************************************************************** PROCEDURE API_RegOpenKeyEx(liHRoot,lcKey,liHKEY) * liHRoot - ID rootu klíče např: HKEY_CURRENT_USER * lcKey - Název klíče (celé cesty) např: "Software\XXXXX" *@liHKEY - Sem se vrátí handle klíče LOCAL liErr liErr=RegOpenKeyEx(liHRoot,lcKey,0,SECURITY_ACCESS_MASK,@liHKEY) RETURN IIF(liErr=ERROR_SUCCESS,REGAPI_SUCCESS,REGAPI_Other) *************************************************************************************** * Uzavře klíč *************************************************************************************** PROCEDURE API_RegCloseKey(liHKEY) * liHKEY - Handle klíče LOCAL liErr liErr=RegCloseKey(liHKEY) RETURN IIF(liErr=ERROR_SUCCESS,REGAPI_SUCCESS,REGAPI_Other) ****************************************************************************** * Vlastní nastavení ****************************************************************************** PROCEDURE TABO_SET(lcSet) * lcSet - "0": Interactive, "1": By List LOCAL liHKEY,lcData,lcKey * V případě VFP 7.0 je místo \6.0\ \7.0\ lcKey="Software\Microsoft\VisualFoxPro\6.0\Options" liHKEY=0 lcData=" " * Otevři klíč v Registry =API_RegOpenKeyEx(HKEY_CURRENT_USER,lcKey,@liHKEY) * Nastav data hodnoty TabOrdering =API_RegSetValueEx(liHKEY,"TabOrdering",REG_SZ,lcSet+CHR(0)) * Uzavři klíč =API_RegCloseKey(liHKEY)
=SYS(3056,1) && Načti nastavení z Registry
* Pokud je bar zaškrtnut, pak jej odznač IF MRKBAR("_msm_View",-14063) KEYB "{ALT+V},{O}" && Staniž se ENDIF KEYB "{ALT+V},{O}" && Staniž se
Kompletní zdrojový kód lze stáhnout zde v poněkud učesanější formě.