![]() | ![]() | Типичные вопросы [программирование] |
На этой станице помещены ответы на вопросы, которые я сам мучительно (или легко) находил, я не думаю, что ответы исчерпывающие, и если Вы найдёте, что что-нибудь дисанирует с Вашими представлениями, давайте обсудим и найдём лучшие решения... Кроме того, часто ответ может зависеть от версии как OS так и Visual FoxPro, проверить всё на всех версиях и платформах для меня просто непосильно. Изначально этот список был исключительно для VFP 5.0, в то время как сейчас это только VFP 7.0/8.0, я мог где-нибудь и пропустить упоминание о версии, и если Вы найдёте несоответствия, сообщите пожалуйста мне. |

... DisplayStatus([Creating table СПРАВОЧНИК_МАРОК_РАЗЪЕДИНИТЕЛЕЙ...]) MakeTable________________________________() ...можно ли это как-то побороть?
Вопрос: Почему exe-модуль созданный в Visual FoxPro "не работает" при попытке запустить его на машине, где не установлена полная версия Visual FoxPro, а только RunTime-овская часть его? 
Вопрос: Я экспериментально установил, какой набор файлов следует поместить в каталог вместе с exe-модулем, созданным в Visual FoxPro, чтобы он корректно работал на клиенте без установки RunTime-овской части Visual FoxPro. Правильно ли я сделал, не будет ли у меня проблем в будущем? 
Вопрос: Я создаю приложение VFP 6.0 используя Application Wizard. Почему теперь, когда я открываю созданный таким образом проект приложения из проводника Windows у меня недоступны все Помощники (Wizard) и Построители (Builders)? Tо же самое я имею, если создам иконку приложения на DeskTop Windows (Shortcut) и открою своё приложение через неё. 
Вопрос: Как "убить" Main Visual FoxPro Window? Создаю форму, устанавливаю ShowWindow=2 (As Top-Level Form)... 
Вопрос: Как решать проблему хранения паролей для доступа к программе. Имеется ли простой способ сделать это? Для паролей я имею dbf-файл (пользователь, пароль). Хотел бы быть иметь возможность шифровать/расшифровать поле пароль. 
Вопрос: Где найти информацию о проблемах 2000 года для FoxPro? 
Вопрос: Как предотвратить запуск нескольких экземпляров VFP приложения на одном рабочем месте? 
#DEFINE MY_APP_CAPTION "Application Window"
#DEFINE SW_SHOWNOACTIVATE 4
DECLARE INTEGER SetForegroundWindow IN Win32API ;
LONG hWnd
DECLARE INTEGER IsIconic IN Win32API;
LONG hWnd
DECLARE LONG FindWindow IN Win32API ;
STRING lpClassName;
,STRING lpWindowName
DECLARE LONG ShowWindow IN Win32API ;
LONG hwnd ;
,LONG nCmdShow
LOCAL lhWnd
lhWnd = FindWindow(NULL, MY_APP_CAPTION)
IF lhWnd # 0
IF IsIconic(lhWnd) # 0
ShowWindow(lhWnd, SW_SHOWNOACTIVATE)
ENDIF
SetForegroundWindow(lhWnd)
CLEAR DLLS
QUIT
ENDIFВопрос: Создаю VFP-приложение с одной формой (ShowWindow - 2 as Top-Level Form), делаю для него Setup, устанавливаю на клиенте Windows 95..., по завершению приложения задача виснит. Имеется ли способ избавиться от этого? 
Вопрос: Как из VFP отследить завершение процесса? 
Вопрос: Нужно из кода переключать раскладку клавиатуры: Rus/Lat. Можно ли это сделать? 
#DEFINE hklRus "00000419" && - name from 0x0419 Russian #DEFINE hklEng "00000409" && - name from 0x0409 English (US) #define KLF_ACTIVATE 1 && 0x00000001 DECLARE LONG LoadKeyboardLayout IN WIN32API ; STRING pwszKLID, ; && input locale identifier INTEGER Flags && input locale identifier options LOCAL lnRetCode lnRetCode = LoadKeyboardLayout(hklRus, KLF_ACTIVATE) lnRetCode = LoadKeyboardLayout(hklEng, KLF_ACTIVATE) CLEAR DLLS
Вопрос: Как поместить картинку в VFP main window? 
WITH _SCREEN
.AddObject( "MyPic", "Image" )
.MyPic.Picture = HOME()+"Fox.bmp"
.MyPic.Top = 10
.MyPic.Left = 10
.MyPic.Visible = .T.
ENDWITH
*
*... а для удаления:
*
_screen.RemoveObject("MyPic") Вопрос: Есть ли библиотека локализации для VFP6 ? Такая как в пятом vfp5rus.dll. 
Вопрос: Возможно ли как-нибудь работать с Си-структурами, получаемыми через Win32Api функций в VFP? 
Вопрос: У меня не закрывается приложение по [x]. Как это побороть? 
PROCEDURE MyCleanUp ON SHUTDOWN ... IF VERSION(2) = 0 QUIT ENDIF
Вопрос: Использую HOME()+'tools/GenDbc/GenDbc.prg' для генерации dbc-файлов, однако получаю безобразие, подобное:
...
DisplayStatus([Creating table СПРАВОЧНИК_МАРОК_РАЗЪЕДИНИТЕЛЕЙ...])
MakeTable________________________________()
...
можно ли это как-то побороть? 
PROCEDURE FixName(lcProcName)
lcProcName=ALLTRIM(lcProcName)
cbadchars = '/,-=:;!@#$%&*.<>()?[]'+;
'+'+CHR(34)+CHR(39)+" "
lcProcName = CHRTRANC(lcProcName,cbadchars ,REPL('_',LEN(cbadchars)))
RETURN lcProcName
ENDPROC
Вопрос: Попытка воспользоваться решением Q194702 "HOWTO: Locate Windows Special Folder Locations" из MSDN ни к чему не привела. Имеется ли альтернативное решение? 
o = CreateObject('wscript.shell')
for i = 1 to 17
? o.SpecialFolders(i)
next
Вопрос: Имеется ли возможность перехватить события VFP main window (_SCREEN) из своей программы? 
* ScreenMethods.PRG
*
* Author: Fred Taylor - 4/10/2001
*
* Use the following to modify _SCREEN methods:
*
* For VFP6 & 7:
*
* _SCREEN.NewObject("oSH","ScreenHook","screenmethods.prg")
*
* For VFP3 & 5:
*
* SET PROCEDURE TO screenmethods ADDITIVE
* _SCREEN.AddObject("oSH","ScreenHook")
*
* Any of the main VFP screen methods can be hooked into in this manner.
*
DEFINE CLASS ScreenHook AS CUSTOM
oScr = _SCREEN
PROCEDURE oScr.Resize()
*
* Code to handle the main VFP screen being resized
*
WAIT WINDOW NOWAIT TRANSFORM(this.Width)+" "+TRANSFORM(this.Height)
ENDPROC
PROCEDURE oScr.RightClick
*
* Code to do a "shortcut" menu on main VFP screen RightClick
*
DO testmenu.mpr
ENDPROC
*
* Custom methods work, too.
*
PROCEDURE oScr.MyMethod
wait window "my method fired!"
ENDPROC
ENDDEFINE
Обратите внимание, что в последнем случае ряд событий недоступно, в частности QueryUnload()Вопрос: Как определить високосный год? 
Вопрос: Как создать setup VFP-приложения в версии 7.0 и выше? Не могу найти пункт Tools/Wizards/Setup 
