Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Updating my FAQ [1/3]

0 views
Skip to first unread message

Vladimir Tokarev

unread,
Mar 8, 2003, 6:09:01 AM3/8/03
to
* в SU.DBMS.FOXPRO
* в RU.FOXPRO
* в RU.VISUAL.FOXPRO


Здpавствуйте, All!

Обновил один из pазделов своего ФАКа.
Жене Гоpяиновy: Если бyдете класть его на свой сайт, то стаpый ваpиант
лyчше не yдалять, т.к. в нем больше моментов, оставшихся от 2.Х

Bye.

-----------------------------------------------------------------------
Дополн. сведения к материалу с темой: Continuing with "FAQ" for you...
(c) CopyLeft 2001-03 Владимиp Токаpев г.Южно-Сахалинск

Производительность труда


> Создание "среды" для разработки программы.

Под понятием создание "среды" ниже подразумевается (пере)определение
функциональных клавиш (ФК) и сочетаний клавиш, настройка системного меню
ФоксПро и пр.

Для управления используется оболочка Far.
Образец FarMenu.ini приложен.
(У меня 2 винчестера с ОС Windows 98 и Windows NT)

Используются файлы:
config.fpw - запускает _startup.txt , определяет F2 - F12 и прочее.
_startup.txt - настраивает системное меню FoxPro
_default.txt - восстанавливает среду, измененную приложением
_del.prg - удаляет / восстанавливает записи в таблице (БД)
_mew.prg - загружает внешний редактор (Multi-Edit 8.0)
_compile.prg - компилирует файлы в рабочем каталоге
_help.prg - не приложен
_msdn.prg - FoxPro Help (старт разных версий MSDN)

Расширение 'txt' взято для облегчения групповых операций с файлами
приложения.

Местонахождение файлов:
File \ Directory рабочий каталог каталог Foxpro
config.fpw + + (default)
_startup.txt + + (default)
_default.txt + + (default)
_del.prg +
_mew.prg +
_compile.prg +
_help.prg +
_msdn.prg +


В FoxPro 2.X определение функциональных клавиш по умолчанию записано в
модуле foxpro*.exe
F2 SET;
F3 LIST;
F4 DIR;
F5 DISPLAY STRUCTURE;
F6 DISPLAY STATUS;
F7 DISPLAY MEMORY;
F8 DISPLAY;
F9 APPEND;
При загрузке они могут быть переопределены и дополнены, последовательно,
файлами default.fky и config.fp(w)
В помощи к 5.0, 6.0 имеется информация об определении ФК по умолчанию,
но она ошибочная. Клавиши F2-F9 не определены. Команды для них могут
быть заданы через default.fky и config.fpw


В результате работы предложенного метода имеем модифицированное
системное меню (_msysmenu) и следующие ФК
F2 USE ?;
F3 MODIFY STRUCTURE ;
F4 MODIFY COMMAND ?;
F5 DISPLAY STRUCTURE ;
F6 DISPLAY STATUS ;
F7 DISPLAY MEMORY ;
F8 DISPLAY OBJECTS ;
F9 DIR *.* ;
F10 QUIT;'
F11 Восстанавливает среду, измененную приложением
F12 Запускает приложение (в рабочем каталоге)

(У меня в меню еще изменен шрифт на FONT 'Arial',10 STYLE 'B'
Однако я этот вариант не стал публиковать из-за его "корявости".
Пэд "формат" недоступен и прочее...)

В разрабатываемой программе должны быть восстановлены
переменные, определенные в _startup.txt, если при ее запуске все чистится.
IF FILE('_startup.MEM')
RESTORE FROM _StartUp.MEM ADDITIVE
ENDIF

Код для процедуры, закрывающей приложение.
Это надо сделать, т.к. работа системного меню зависит от
наличия переменных phile_*

*IF not 'Library' $ version() && 2.X
IF _VFP.StartMode = 0
.......
SUSPEND
ELSE
....
QUIT
ENDIF


Описанный способ работает с 1995 года... однако он основан на моем
личном опыте.
Hастройка F4 и F10 "навеяна" оболочкой Hортона...
А F5, F6, F7 запомнились со времен FoxBase.
Вы можете легко перенастроить себе среду под собственные приоритеты.

Приведенный ниже код проверен для ФоксПро 6.0
Файл _default.txt сделан еще для DOS, но свои функции выполняет...


**********************
*
*> File: FarMenu.ini
*
0: FoxPro 6.0
D:\VS60\VFP98\VFP6.EXE
1: Multi-Edit 8.0
d:\mew\mew32 -sr
2: Help for VFP (MSDN 1999)
D:\WINNT\HH.EXE "C:\PROGRAM FILES\MICROSOFT VISUAL
STUDIO\MSDN\99APR\1033\FoxHelp.chm"
3: Help for VFP (MSDN 2001)
D:\WINNT\HH.EXE D:\VS60\MSDN\2001JUL\1033\Fox7Help.chm
4: Knowledge Base (MSDN 1999)
D:\WINNT\HH.EXE "C:\PROGRAM FILES\MICROSOFT VISUAL
STUDIO\MSDN\99APR\1033\kbfoxpro.chm"
5: Knowledge Base (MSDN 2001)
D:\WINNT\HH.EXE D:\VS60\MSDN\2001JUL\1033\kbfoxpro.chm
6: Directory FoxPro 6.0 (disk D:)
cd D:\VS60\VFP98\
7: Directory FoxPro 6.0 (disk C:)
cd "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VFP98\"
8: Directory MSDN 1999
cd "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\MSDN\99APR\1033\"
9: Directory MSDN 2001
cd D:\VS60\MSDN\2001JUL\1033\
M: Multi-Edit 7.0
e:\me\me386
S: Visual Source Safe 6.0
D:\VS60\Common\VSS\win32\SSEXP.EXE -yAdmin

**********************
*
*> File: config.fp(w)
*
CODEPAGE=AUTO
HELP=ON
DEVELOPMENT=ON
LOGERRORS=ON
*_STARTUP = "C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VFP98\_startup"
COMMAND = DO _startup.txt

*TEDIT=*.EXE
*TMPFILES=C:

F2 ='use ?;'
F3 ='modify structure ;'
F4 ='modify command ?;'
F5 ='display structure ;'
F6 ='display status ;'
F7 ='display memory ;'
F8 ='display objects ;'
F9 ='dir *.* ;'
F10='QUIT;'
F11 ='do _default.txt;'
F12 ='on error *;deactivate menu all;clear menus;cancel program;clear
program;clear all;on error;do startup;'

* -------------------------------------------------------------------
* <<< порядок настройки для разработки системы в оболочке FoxPro >>>
*
* - Проверить внешний редактор и его путь в tedit
* - Вставить имя головного файла задачи для f12 в config.fp(w)
* (после ... on error; написать do "your start_file";)
* Для конфига в каталоге ФоксПро это не надо делать.
* - Hастроить файл _default.txt
* (включить имя нужного головного файла, как в config)
* - Проверить совпадение установок для функц. клавиш в config и в _default
* - Отключить quit в процедуре выхода из задачи
* - Проверить (настроить) файл _mew.prg в каталоге ФоксПро
* - Проверить (настроить) файл _msdn.prg в каталоге ФоксПро
* - Проверить (настроить) файл _compile.prg в каталоге ФоксПро

* eof: config.fp(w)
********************

*********************
*> File: _startup.txt
*
* _startup.txt - управление настройкой среды и системного меню FoxPro.
* Он запускается при загрузке СУБД командой CONFIG.FPW:
* command = do _startup.txt
* Для каждой системы этот файл должен находится в ее рабочем каталоге.
*
SET TALK OFF
CLEAR
* CLEAR MACROS && снимает все определения Fxx в config.fp

_SCREEN.WindowState = 2
_SCREEN.FontName = 'arial cyr'

IF TYPE("phile_hlp") <> "U"
release phile_hlp
ENDIF
IF TYPE("phile_del") <> "U"
release phile_del
ENDIF
IF TYPE("phile_mew") <> "U"
release phile_mew
ENDIF
IF TYPE("phile_msdn") <> "U"
release phile_msdn
ENDIF
IF TYPE("phile_compile") <> "U"
release phile_compile
ENDIF

PUBLIC phile_hlp, ;
phile_del, ;
phile_mew, ;
phile_msdn, ;
phile_compile

phile_hlp = HOME() + '_help' && файл с нашей помощью
phile_del = HOME() + '_del' && удаление от текущей записи до конца файла
phile_mew = HOME() + '_mew' && запуск Multi-Edit 8.0
phile_msdn = HOME() + '_msdn' && запуск HH.EXE & *.chm
phile_compile = HOME() + '_compile' && compile all *.prg , *.mpr


lcCurrSafety = SET('safety')
set safety off
SAVE to _startup.MEM ALL LIKE phile_*
set safety &lcCurrSafety

* Переменные должны быть восстановлены в разрабатываемой программе, если
* при ее запуске все чистится.
* Пример: IF FILE('_startup.MEM')
* RESTORE FROM _StartUp.MEM ADDITIVE
* ENDIF

if not (file (phile_hlp+'.prg') .or. file (phile_hlp+'.fxp'))
wait window 'Hет файла помощи '+phile_hlp+'.prg'
endif

if not (file (phile_del+'.prg') .or. file (phile_del+'.fxp'))
wait window 'Hет файла '+phile_del+'.prg'
endif

if not (file (phile_mew+'.prg') .or. file (phile_mew+'.fxp'))
wait window 'Hет файла '+phile_mew+'.prg'
endif

if (file (phile_msdn+'.prg') .or. file (phile_msdn+'.fxp'))
* on key label f1 DO (phile_msdn) WITH 1
else
wait window 'Hет файла '+phile_msdn+'.prg'
endif

if not (file (phile_compile+'.prg') .or. file (phile_compile+'.fxp'))
wait window 'Hет файла '+phile_compile+'.prg'
endif

**-- ("File" pad)
* Переопределен пункт 'Exit'.

DEFINE BAR _MFI_NEW OF _MFILE PROMPT '\<New...'
DEFINE BAR _MFI_OPEN OF _MFILE PROMPT '\<Open...'
DEFINE BAR _MFI_CLOSE OF _MFILE PROMPT '\<Close'
* DEFINE BAR _MFI_SP100 OF _MFILE PROMPT '\-'
DEFINE BAR _MFI_SAVE OF _MFILE PROMPT '\<Save'
DEFINE BAR _MFI_SAVAS OF _MFILE PROMPT 'Save \<As...'
DEFINE BAR _MFI_SAVEASHTML OF _MFILE PROMPT 'Save As \<HTML...'
DEFINE BAR _MFI_REVRT OF _MFILE PROMPT '\<Revert'
* DEFINE BAR _MFI_SP200 OF _MFILE PROMPT '\-'
* DEFINE BAR _MFI_SETUP OF _MFILE PROMPT 'Pr\<inter Setup...' && 2.X
* DEFINE BAR _MFI_PRINTONECOPY OF _MFILE PROMPT '' && dimmed
DEFINE BAR _MFI_IMPORT OF _MFILE PROMPT '\<Import...'
DEFINE BAR _MFI_EXPORT OF _MFILE PROMPT '\<Export...'
* DEFINE BAR _MFI_SP300 OF _MFILE PROMPT '\-'
DEFINE BAR _MFI_PGSET OF _MFILE PROMPT 'Page Set\<up...'
DEFINE BAR _MFI_PREVU OF _MFILE PROMPT 'Print Pre\<View'
* DEFINE BAR _MFI_PRINT OF _MFILE PROMPT '\<Print...' && 2.X dimmed
DEFINE BAR _MFI_SYSPRINT OF _MFILE PROMPT '\<Print...'
DEFINE BAR _MFI_SEND OF _MFILE PROMPT 'Sen\<d...'
* DEFINE BAR _MFI_SP400 OF _MFILE PROMPT '\-' && separator N5
* DEFINE BAR _MFI_QUIT OF _MFILE PROMPT 'E\<xit'
* Клавиши изготовителя команда не берет, например KEY F10.
* Однако их можно задать через set function
DEFINE BAR _MFI_QUIT OF _MFILE PROMPT 'Выход из Fo\<xPro'
* SKIP for "QUERY" $ UPPER(wontop()) && KEY Alt-Q
* SKIP for "RQBE" $ wontop() && KEY Alt-Q FoxPro 2.X

**-- ("Edit" pad)
* Undo вызов сделан на Ctrl+U (вместо Ctrl+Z), как в 2.Х
* В Redo выделенной буквой поставлена R
* Clear вызов сделан на Ctrl+Z (мнемоника - ZAP)
* 'Re\<do' -> '\<Redo'
* 'Cle\<ar' -> 'Clear'
* 'Se\<lect All' -> 'Select \<All'
* 'Find A\<gain' -> 'Find a\<Gain'
* 'R\<eplace...' -> 'Rep\<lace...'
* 'Prope\<rties...' -> 'Properti\<es...'

DEFINE BAR _MED_UNDO OF _MEDIT PROMPT '\<Undo' ;
KEY CTRL-U, 'Ctrl+U'
DEFINE BAR _MED_REDO OF _MEDIT PROMPT '\<Redo'
* DEFINE BAR _MED_SP100 OF _MEDIT PROMPT '\-'
DEFINE BAR _MED_CUT OF _MEDIT PROMPT 'Cu\<t'
DEFINE BAR _MED_COPY OF _MEDIT PROMPT '\<Copy'
DEFINE BAR _MED_PASTE OF _MEDIT PROMPT '\<Paste'
DEFINE BAR _MED_PSTLK OF _MEDIT PROMPT 'Paste \<Special...'
DEFINE BAR _MED_CLEAR OF _MEDIT PROMPT 'Clear' ;
KEY CTRL-Z, 'Ctrl+Z'
* DEFINE BAR _MED_SP200 OF _MEDIT PROMPT '\-'
DEFINE BAR _MED_SLCTA OF _MEDIT PROMPT 'Select \<All'
* DEFINE BAR _MED_SP300 OF _MEDIT PROMPT '\-'
DEFINE BAR _MED_FIND OF _MEDIT PROMPT '\<Find...'
DEFINE BAR _MED_FINDA OF _MEDIT PROMPT 'Find a\<Gain'
DEFINE BAR _MED_REPL OF _MEDIT PROMPT 'Rep\<lace...'
* DEFINE BAR _MED_REPLA OF _MEDIT PROMPT 'Replace All' && 2.X
DEFINE BAR _MED_GOTO OF _MEDIT PROMPT 'Go to Li\<ne...' ;
AFTER -23539
* DEFINE BAR _MED_SP400 OF _MEDIT PROMPT '\-'
DEFINE BAR _MED_INSOB OF _MEDIT PROMPT '\<Insert Object...'
DEFINE BAR _MED_OBJ OF _MEDIT PROMPT '\<Object...'
DEFINE BAR _MED_LINK OF _MEDIT PROMPT 'Lin\<ks...'
* DEFINE BAR _MED_SP500 OF _MEDIT PROMPT '\-'
* DEFINE BAR _MED_BEAUT OF _MEDIT PROMPT 'Beauti\<fy...' && 'Tools'
* DEFINE BAR _MED_PREF OF _MEDIT PROMPT 'Preferences...' && 2.X
DEFINE BAR _MED_PREF OF _MEDIT PROMPT 'Properti\<es...'

**-- ("View" pad)
DEFINE BAR _MVI_TOOLB OF _MVIEW PROMPT '\<Toolbars...'

**-- ("Tools" pad)
* Удалены "волшебники".
* Вызов 'Class Browser' на Alt+B
* Вызов 'Debugger' на Alt+G
* Внешний редактор на Alt+4
* Калькулятор на Ctrl+K
* '\<Class Browser' -> 'Class \<Browser'
* 'Component \<Gallery' -> '\<Component Gallery'
* 'De\<bugger' -> 'Debu\<Gger'

**-- удаление опций из вертикального меню ("Tools" pad)
RELEASE BAR _MTL_WZRDS OF _MTOOLS && Wizards
RELEASE BAR _MTL_SP100 OF _MTOOLS && separator

* DEFINE BAR _MTL_WZRDS OF _MTOOLS PROMPT '\<Wizards'
* DEFINE BAR _MTL_SP100 OF _MTOOLS PROMPT '\-'
DEFINE BAR _MTL_SPELL OF _MTOOLS PROMPT '\<Spelling...'
DEFINE BAR _MST_MACRO OF _MTOOLS PROMPT 'M\<acros...'
DEFINE BAR _MTL_BROWSER OF _MTOOLS PROMPT 'Class \<Browser' ;
KEY Alt-B, 'Alt+B'
DEFINE BAR _MTL_GALLERY OF _MTOOLS PROMPT '\<Component Gallery'
DEFINE BAR _MTL_COVERAGE OF _MTOOLS PROMPT 'Coverage \<Profiler'
DEFINE BAR _MED_BEAUT OF _MTOOLS PROMPT 'Beauti\<fy...'
DEFINE BAR _MTI_RUNACTIVEDOC OF _MTOOLS PROMPT '\<Run Active Document...'
* DEFINE BAR _MTL_SP200 OF _MTOOLS PROMPT '\-'
DEFINE BAR _MTL_DEBUGGER OF _MTOOLS PROMPT 'Debu\<Gger' ;
KEY Alt-G, 'Alt+G'
* DEFINE BAR _MTL_SP400 OF _MTOOLS PROMPT '\-' && sep. N3
DEFINE BAR _MTL_OPTNS OF _MTOOLS PROMPT '\<Options...'

**-- дополнение
* Внешний редактор в "Hортоне" вызывался на ALT+F4
* Поддержку "стереотипа" можно организовать через ALT+4 или SHIFT+F4
* Помещено сюда, т.к. в _medit этот пункт иногда деактивируется (bug?)
DEFINE BAR 1 OF _MTOOLS PROMPT 'Редактор Multi-Edit' ;
KEY Alt-4, 'Alt+4' ;
AFTER -13819 ;
SKIP FOR TYPE('phile_mew') <> 'C'

DEFINE BAR 2 OF _MTOOLS PROMPT 'Калькулятор' ;
KEY Ctrl-K, 'Ctrl+K' ;
AFTER 1
DEFINE BAR 3 OF _MTOOLS PROMPT '\-' AFTER 2
ON SELECTION BAR 1 OF _MTOOLS DO (phile_mew)
ON SELECTION BAR 2 OF _MTOOLS activate window calculator

0 new messages