Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Закриытие приложения / 25 сообщений из 29, страница 1 из 2
09.01.2015, 17:00
    #38850901
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
Главный фафл программы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
ON SHUTDOWN DO MyExitProcedure  
  DO MainMenu.mpr  
  READ EVENTS  
    
  PROCEDURE MyExitProcedure
 * Необходимые действия по "штатному" закрытию приложения  
  CLEAR EVENTS  
  RETURN



Структура проекта:
Код: sql
1.
2.
3.
4.
ProjectName.pjt(файл)
ProjectName.pjx(файл)
menus(папка)   -   mainmenu
programms(папка)   - main.prg



Меню содержит 1 пункт - выход (MyExitProcedure())

после запуска приложения по нажатию кнопки выход - выдает ошибку : файл MyExitProcedure.prg не существует.

В чем проблема?
...
Рейтинг: 0 / 0
09.01.2015, 23:01
    #38851041
Smart TV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
В главном файле программы, с помощью команды SET PATH TO, укажи где искать твой файл MyExitProcedure.prg

Например так:
SET PATH TO c:\Test\Programs
...
Рейтинг: 0 / 0
09.01.2015, 23:30
    #38851047
chagoserg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
helpКогда вы пытаетесь выполнить процедуру с помощью команды DO ProcedureName, Visual FoxPro ищет заданную процедуру по следующем порядке:

В программе, содержащей команду DO.

В текущей базе данных.

В файлах процедур, открытых по команде SET PROCEDURE.

Для подробной информации, см. Команда SET PROCEDURE.

В программах, принадлежащих цепочке выполняемых файлов.

Visual FoxPro просматривает программные файлы, начиная с последней выполнявшейся программы и кончая первой выполнявшейся программой.

В файлах автономных программ.

при нажатии на "крестик" ошибок нет и закрывается?

В главном файле программы, с помощью команды SET PATH TO, укажи где искать твой файл MyExitProcedure.prg

отдельного MyExitProcedure.prg у автора просто нет
...
Рейтинг: 0 / 0
10.01.2015, 00:12
    #38851056
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
А если приложение надо запустить из другой директории, то идти за следующим советом.
Ох уж этот хитрый стартовый файл.

Непонятно, зачем в VFP нужен такой странный способ запуска приложения.
Из учебника Каратыгина, 1995 г.,стр. 430 - известный main.prg из Tastrade:
CLEAR ALL
IF SetPath()
PUBLIC oSales
oSales = CREATEOBJECT('bcApplication')
WITH oSales
.cDatabase = 'Sales'
.cMainMenu = 'Sales'
.cMainCaption = 'Sales'
ENDWITH
oSales.DO()
ENDWITH

CLEAR ALL
RELEASE ALL EXTENDED
...
Рейтинг: 0 / 0
10.01.2015, 09:45
    #38851126
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
chagoserg, реакция на действия при нажатии на крестик и кнопку выход одинаковые. Процедура MyExitProcedure расположена в конце главного файла и, по идее, должна быть видна из любого места. Прописывать PATH = D:/E58t/programs в конфиг не помагает.
...
Рейтинг: 0 / 0
10.01.2015, 10:46
    #38851134
chagoserg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
faustgreenchagoserg, реакция на действия при нажатии на крестик и кнопку выход одинаковые.
такая же ошибка?
faustgreenвыдает ошибку : файл MyExitProcedure.prg не существует.

faustgreenПроцедура MyExitProcedure расположена в конце главного файла и, по идее, должна быть видна из любого места.
вовсе нет
faustgreenПрописывать PATH = D:/E58t/programs в конфиг не помагает.
дык нет такого файла MyExitProcedure.prg в programms(папка)
потому и не помогает

вынесите процедуру MyExitProcedure в отдельный файл
сделайте SET PROCEDURE с указанием этого файла
путь к файлу укажите в SET PATH TO
собственно это я и привёл в выдержке из хелпа
...
Рейтинг: 0 / 0
10.01.2015, 11:24
    #38851147
chagoserg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
стоит также учесть, что можно использовать относительные пути к каталогу по умолчанию (см. SET DEFAULT, SYS(2003), SYS(2004) )
...
Рейтинг: 0 / 0
10.01.2015, 12:51
    #38851191
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
Спасибо за советы, но не 1 вариант не подошел. Буду пробывать другие варианты.
...
Рейтинг: 0 / 0
10.01.2015, 12:56
    #38851195
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
faustgreenпосле запуска приложения по нажатию кнопки выход - выдает ошибку : файл MyExitProcedure.prg не существует.
Добавь при старте
Код: sql
1.
2.
3.
4.
set proc to main additive
ON SHUTDOWN DO MyExitProcedure  
  DO MainMenu.mpr  
  READ EVENTS



Еще надо ON SHUTDOWN отключать
Код: sql
1.
2.
3.
4.
5.
  PROCEDURE MyExitProcedure
 * Необходимые действия по "штатному" закрытию приложения  
  ON SHUTDOWN
  CLEAR EVENTS  
  RETURN
...
Рейтинг: 0 / 0
10.01.2015, 13:06
    #38851200
chagoserg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
faustgreenне 1 вариант не подошел. Буду пробывать другие варианты.
может стоит показать код? :)
...
Рейтинг: 0 / 0
10.01.2015, 14:46
    #38851244
tor300
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
Dima T Вам уже ответил. Добавьте в процедуру выхода выделенную строчку:

Код: sql
1.
2.
3.
4.
5.
  PROCEDURE MyExitProcedure
 * Необходимые действия по "штатному" закрытию приложения  
  ON SHUTDOWN
  CLEAR EVENTS  
  RETURN
...
Рейтинг: 0 / 0
10.01.2015, 15:15
    #38851256
chagoserg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
helpИспользование команды ON SHUTDOWN без параметра Команда очищает текущую установку команды ON SHUTDOWN.

т.е. как бы просто сбрасывается способ обработки выхода, и всё
helpCLEAR EVENTS
Прекращает обработку событий, начатую по команде READ EVENTS. После выдачи команды CLEAR EVENTS выполнение программы продолжается со строки, непосредственно следующей за строкой с командой READ EVENTS.

таким образом. после остановки обработки очереди событий нужно собственно сделать выход, например QUIT - зависит от режима, в деббаге достаточно сделать CANCEL
...
Рейтинг: 0 / 0
16.01.2015, 13:08
    #38856086
pipos522
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
chagoserg,

попробуй так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
  
  _SCREEN.CAPTION = [ОАО «ГазпромЬ»]
  _SCREEN.BACKCOLOR = RGB(245,240,220)
  _SCREEN.WIDTH = 350
  _SCREEN.HEIGHT = 250
  _SCREEN.AUTOCENTER = .T.
  _SCREEN.CLOSABLE = .T.

   SET PATH TO ARHIV, DATABASE, FORM, GRAPHIC, MENU, PRG, SHABL
   SET TALK OFF
   SET HELP OFF
   SET ESCAPE OFF
   SET SAFETY OFF
   SET CONFIRM ON
   SET DELETED ON
   SET DATE GERMAN
   SET HOURS TO 24
   SET STATUS BAR OFF

  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
   ON ERROR MESSAGEBOX([Номер ошибки: ]           + LTRIM(STR(ERROR())) +CHR(13)+;
                       [Сообщение: ]              + MESSAGE()           +CHR(13)+;
                       [Строка с ошибкой: ]       + MESSAGE(1)          +CHR(13)+;
                       [Номер строки с ошибкой: ] + LTRIM(STR(LINENO()))+CHR(13)+;
                       [Программа с ошибкой: ]    + PROGRAM()                   ,;
               0+64+0, [ОШИБКА ...])                                            &&
  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*


*_________________________
 ON SHUTDOWN DO MY_EXIT &&
 PUSH MENU _MSYSMENU    &&
*_________________________


_SCREEN.ADDOBJECT([COMMAND_1], [MY_COMMAND])

*_________________________
_SCREEN.VISIBLE = .T.   &&
 READ EVENTS            &&
*_________________________





*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~< ПРОЦЕДУРЫ И ФУНКЦИИ >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*





*****************************************************************
*///////////////////////////////////////////////////////////////
***************************************************************
 PROCEDURE MY_EXIT
   CLEAR EVENTS
   QUIT
 RETURN
 
 

*****************************************************************
*///////////////////////////////////////////////////////////////
***************************************************************
 DEFINE CLASS MY_COMMAND AS COMMANDBUTTON
     CAPTION = [Выход]
     CANCEL = .T.
     LEFT = 10
     TOP = 10
     HEIGHT = 25
     WIDTH = 100
     VISIBLE = .T.

     PROCEDURE CLICK
       CLEAR EVENTS &&  в меню-выход
       QUIT         &&  эти строчки
     RETURN
 ENDDEFINE
 

...
Рейтинг: 0 / 0
19.01.2015, 13:34
    #38857484
chagoserg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
pipos522chagoserg,

попробуй так

это пускай автор темы пробует ;)
...
Рейтинг: 0 / 0
19.01.2015, 14:00
    #38857528
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
Dima Tfaustgreenпосле запуска приложения по нажатию кнопки выход - выдает ошибку : файл MyExitProcedure.prg не существует.
Добавь при старте
Код: sql
1.
2.
3.
4.
set proc to main additive
ON SHUTDOWN DO MyExitProcedure  
  DO MainMenu.mpr  
  READ EVENTS



Еще надо ON SHUTDOWN отключать
Код: sql
1.
2.
3.
4.
5.
  PROCEDURE MyExitProcedure
 * Необходимые действия по "штатному" закрытию приложения  
  ON SHUTDOWN
  CLEAR EVENTS  
  RETURN



Вы так уверенно подправили этот код, что нет сомнения, что вы знаток в этой теме.
Поэтому возник вопрос: А сможете вы хотя бы за полгода написать этот главный файл?
Полноценный, в кодах, а не советах.
И вообще, это возможно в принципе?
А то новички уже второй десяток лет бьются над этой проблемой: "Попробуй так".
...
Рейтинг: 0 / 0
19.01.2015, 15:23
    #38857635
pipos522
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
chagosergэто пускай автор темы пробует ;)
Сори, промахнулся:-)
...
Рейтинг: 0 / 0
19.01.2015, 15:28
    #38857643
pipos522
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
http://www.foxclub.ru/articles/art39.php Главный (стартовый) файл проекта
...
Рейтинг: 0 / 0
19.01.2015, 16:54
    #38857746
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
pipos522 http://www.foxclub.ru/articles/art39.php Главный (стартовый) файл проекта

Речь идет о файле, а не советах на пальцах - послать по ссылке наука несложная.
Помнится, как-то на примерно подобный вопрос автор статьи дал тактично понять, что готов ограничиться только советами.
Т.е. это что-то вроде морковки для любознательных.

Например, хотя бы ваш "попробуй", где например хотя бы традиционные SET и _SCREEN настройки - по окончании работы они должны быть возвращены в исходное состояние, а не SHUTDOWN.
Тем более, что их намного больше, есть и другие.
Ошибки должны обрабатываться, а не MESSAGEBOX.
Стартовое меню должно запускаться, а не только PUSH.
И много еще чего.
...
Рейтинг: 0 / 0
19.01.2015, 17:13
    #38857782
Fffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
sg12, для этого и нужен программист.
...
Рейтинг: 0 / 0
19.01.2015, 18:25
    #38857820
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
Fffffffffffffsg12, для этого и нужен программист.

Для чего?
Для того, чтобы двадцать лет учиться писать по буквам READ EVENTS и каждой раз любоваться своим написанным как творением?
...
Рейтинг: 0 / 0
20.01.2015, 07:18
    #38858036
pipos522
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
sg12автор статьи дал тактично понять, что готов ограничиться только советами
Я написал такой "пример"/"Ответ на вопрос" который сам хотел бы получить.
Сам на фоксе недавно, 2х лет еще нет, лично мне ниразу не помогли простые советы,
подчеркну лично для меня это пустой треп, а вот по реальным примерам\кодам мне очень комфортно "изучать".

sg12Например, хотя бы ваш "попробуй"
на фокс клубе меня постоянно так скажем "Опускают" так не пишут и тд но на практике,
уже с написанными программа на которых "Активно" работают с Выходом/Закрытим Совершенно
никаких проблем.
...
Рейтинг: 0 / 0
20.01.2015, 12:04
    #38858329
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
pipos522... на фокс клубе меня постоянно так скажем "Опускают"...
Будем надеяться что до этого здесь не дойдёт...
Хотя некоторые участники дискуссии привыкли выражать свои мысли весьма категорично и без "сглаживания" своих "фразеологических оборотов"...
...
Рейтинг: 0 / 0
20.01.2015, 12:34
    #38858362
Fffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
sg12Fffffffffffffsg12, для этого и нужен программист.

Для чего?
Для того, чтобы двадцать лет учиться писать по буквам READ EVENTS и каждой раз любоваться своим написанным как творением?
Никогда таких проблем не было.
...
Рейтинг: 0 / 0
20.01.2015, 12:56
    #38858385
pipos522
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
сразу не понял что это в мой адрес
sg12 Вы так уверенно подправили этот код, что нет сомнения, что вы знаток в этой теме.
Тот код который я выложил я взял из "шаблона программ" который я напечатал для себя,
своими ручонками, да он не идеален но меня устраивает целиком и полностью.
http://forum.foxclub.ru/read.php?29,643245,page=1

sg12 Поэтому возник вопрос: А сможете вы хотя бы за полгода написать этот главный файл? Полноценный, в кодах, а не советах.
Может пусть автор решает какой совет ему подходит?
О каких полгода речь, что-то не понял.


http://tempfile.ru/file/3108815
(еще раз уточню делал для себя, пользуюсь сам, устраивает все, экономит время на старте новой программы)




Sergey Ch, У меня уже иммунитет выработался.
...
Рейтинг: 0 / 0
20.01.2015, 16:34
    #38858677
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закриытие приложения
pipos522

Непонятно, откуда это вы взяли, с чего у вас претензии ко мне.
С таким наездом вы так меня под монастырь подведете.
Как раз новичков я не "опускаю", наоборот "знатоков" люблю.
Ну, раз уж хотите, отвечу.

Уверяю вас, в основном у "опускающих" как раз со своими кодами неважно, у них они обычно переписываемые из года в год.
Толковых кодов немного, они и были в основном у неприметных энтузиастов.
Сбивает с толку апломб, а также старожилы болезненно относятся к тем, кто не вписывается в их религию, выдавливая из своего очерченного круга.
Основная идея идет издревна - запустить смесь из FPD и VFP3 под VFP9, из goApp перетащить все в main, из классов в prg.
Вкупе с основным постулатом: "У меня работает".
Что наглядно просматривается и на примере битвы с данным "главным" файлом.
Уже сам VFP9 прекратил существование, а идеология живуча.

Ваши ссылки я все же просмотрел, там вам немало серьезных замечаний.
Могу только сказать, что путь, на который вы тоже встали - тупиковый, каким он и был изначально, но это ваши проблемы - попрут ведь вас.
Потому что VFP9 это стандартные Visual и ООП.
Напомню, Фокспро одновременно с Delphi, 1C, VB(A) перешел на объекты. Но там народ реально перешел, и посмотрите при равных условиях кто где сейчас.

Пара советов, как же без них:
Стуктура стартового файла несложна, определена два десятка лет назад, там нет места для творчества:
CD LEFT(SYS(16,0),RAT('\',SYS(16,0)))
PUBLIC goApp
goApp = NEWOBJECT('goApp','classlib\_app.vcx')
goApp.Do()

Если же вы пишете в prg-шниках, то там должен быть только запуск и выход, все из стартового файла выносится в отдельные файлы.
Все процедуры в них должны быть спарены - Откр/Закр, все, что открыто, должно быть закрыто.
Константы и параметры хранятся не в стартовом файле, а в .dbf,.txt,.ini,.h, может еще где, и извлекаются/записываются процедурами.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Закриытие приложения / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]