TOP3FAQ | |
---|---|
Владимир Максимов Автор Сообщений: 14097 Откуда: Москва Дата регистрации: 02.09.2000 |
Может выложить это в решения? А то уж больно регулярно появляются эти вопросы.
===================================================== Три наиболее часто встречающиеся вопросы новичков. Звучат они приблизительно так: Пока я отлаживал приложение в среде FoxPro - все было нормально, но как только создал EXE (или APP) и запустил его, то: 1) Окно FoxPro мелькает на экране и тут же закрывается 2) Не могу выйти из FoxPro. Закрыть приложение. Либо появляется сообщение "Cann't quit Visual FoxPro", либо приложение продолжает висеть в окне задач, хотя на экране ничего не видно 3) При попытке изменить данные в рабочих таблицах появляется сообщение "Cursor is read-only" Еще раз обращаю внимание, что эти ошибки возникли в готовом EXE (APP), а не на этапе отладки. ******************************* 1) <b>Окно FoxPro мелькает на экране и тут же закрывается</b> ******************************* Ошибка связана с тем, что не была организована точка останова приложения. Т.е. FoxPro пребывает в недоумении в какой момент необходимо остановиться, чтобы подождать реакции пользователя. На этапе отладки такой точкой останова была сама среда FoxPro, но в готовом EXE ее нет. Стандартным способом организации точки останова является использование команды READ EVENTS. Как правило, в качестве главного запускающего объекта используется файл PRG и в нем пишется примерно следующий код: ... * Предварительные настройки среды FoxPro ... DO MainMenu.mpr DO FORM MainForm.SCX READ EVENTS ... * Операции по завершению приложения FoxPro и возврату среды в исходное состояние ... В данном случае использовано одновременная загрузка и главного меню в основном окне FoxPro и запуск некой стартовой формы. При этом предполагается, что форма НЕ модальная (WindowType=0-Modeless). Выполнение данной процедуры будет остановлено на команде READ EVENTS. Что и позволит работать пользователям в готовом EXE. При подаче в любом месте программы команды CLEAR EVENTS FoxPro автоматически перейдет к выполнению команд, следующих за READ EVENTS, выполнение главной стартовой программы завершится и приложение FoxPro будет закрыто. Таким образом, для закрытия приложения необходимо: -) При использовании главного окна FoxPro с главным управляющим меню предусмотреть в этом меню пункт "Выход", в котором и дать команду CLEAR EVENTS -) Если главное окно FoxPro не используется (например, при работе с формами ShowWindow=2 - As Top-Level Form), то команду CLEAR EVENTS следует дать при закрытии формы. Лучше всего в событии UNLOAD-формы -) Для не штатных режимов закрытия приложения прочитать ответ на следующий вопрос ******************************* 2) <b>Не могу выйти из FoxPro. Закрыть приложение. Либо появляется сообщение "Cann't quit Visual FoxPro", либо приложение продолжает висеть в окне задач, хотя на экране ничего не видно</b> ******************************* Данный вопрос напрямую связан с предыдущим. Дело в том, что при описании выхода из программы в предыдущем вопросе рассмотрен только штатный способ, когда и программист и пользователь все делали "как положено". Если приложение FoxPro было закрыто, но тем не менее осталось висеть в списке задач (Task Manager открывающийся по Ctrl+Alt+Del), то это значит, что программист не дал команды CLEAR EVENTS. Сообщение же "Cann't quit Visual FoxPro" появляется при попытке закрыть приложение нажав на крестик в правом верхнем углу основного окна FoxPro или нажав кнопку "End Task" в Task Manager. Для перехвата этого события в FoxPro предусмотрена настройка ON SHUTDOWN. Т.е. в главной стартовой программе получается примерно такой код: ... * Предварительные настройки среды FoxPro * И настройка не штатного выхода из программы ON SHUTDOWN Do ExitProg ... DO MainMenu.mpr DO FORM MainForm.SCX READ EVENTS ... * Операции по завершению приложения FoxPro и возврату среды в исходное состояние * И сброс настройки по не штатному выходу из программы ON SHUTDOWN ... PROCEDURE ExitProg IF MessageBox('Вы действительно хотите закрыть приложение?',4+32+256,'Закрытие приложения')=7 RETURN ENDIF ... * Действия по корректному закрытию всех открытых форм * и откату незавершенных изменений в базе данных ... CLEAR EVENTS RETURN ******************************* 3) <b>При попытке изменить данные в рабочих таблицах появляется сообщение "Cursor is read-only"</b> ******************************* Этот вопрос напрямую не связан с первыми двумя. Причин данной ошибки может быть несколько. а) Наиболее вероятная причина этой ошибки заключается в том, что Вы включили таблицу DBF внутрь EXE. Чтобы убедится в этом откройте окно вашего проекта и найдите нужную таблицу. Слева от имени таблицы должен стоять значек перечеркнутого кружочка. Если это не так, то щелкните правой кнопкой мыши по имени таблицы и в появившемся меню выберите пункт "Exclude". После этого перекомпилите проект (заново постройте EXE). Включение какого-либо файла внутрь EXE осущетсвляется аналогично. Правой кнопкой мыши по имени и в открывшемся меню выбрать пункт "Include". Надо понимать, что включение какого-либо файла внутрь EXE означает, что этот файл становится частью EXE и его модификация недопустима. Это можно использовать как примитивный способ защиты своих данных, если эти данные предоставляются только на чтение. Соотсветсвенно, файл включенный внутрь EXE не надо поставлять клиенту (он и так находится внутри EXE). б) Еще одной причиной подобной ошибки может являтся перенос базы данных клиенту на лазерном диске. Дело в том, что в момент записи на лазерный диск всем файлам автоматически устанавливают признак Read-Only. Соответсвенно после копирования на жесткий диск к клиенту этот признак необходимо снять. Правой кнопкой мыши в "Проводнике" (Explorer-Windows) на имени файла, в появившемся меню выбрать пункт "Свойства" (Properties) и снять птичку "Только чтение" ("Read-Only"). Если предварительно выделить несколько файлов, то свойства будут распространены на все выделенные файлы. в) Более экзотическая причина - это настройка прав доступа пользователей. Возможно папка в которой расположены файлы DBF администратором была выдана в общее пользование со статусом Read-Only. В этом случае необходимо обратится к администратору с просьбой изменить права доступа. |
RE: TOP3FAQ | |
---|---|
av |
Конечно, надо в решения! Тем более, что все так качественно изложено. Просто блеск! Люди скажут спасибо.
|
не! Предлагаю ссылку прям в конфе сделать! + | |
---|---|
Hel!Riser Сообщений: 10452 Откуда: Нижний Новгород Дата регистрации: 11.03.2001 |
типа после Поиск'а - чтоб далеко не ходить и искать ссылку, чтоб запостить в ответ
|
Меня терзают смутные сомнения | |
---|---|
Slavik Сообщений: 1052 Откуда: Калининград Дата регистрации: 14.08.2001 |
Как представитель вопрошающей стороны скажу: каждый считает свою проблему исключительной и не полезет в FAQ, а предпочтет сразу задать вопрос. Это к вопросу (сорри за стилистику) о пользовании поиском и просмотром последних тем форума : уж сколько раз твердили миру...
|
© 2000-2024 Fox Club  |