powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Закриытие приложения
25 сообщений из 29, страница 1 из 2
Закриытие приложения
    #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
Закриытие приложения
    #38851041
Smart TV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В главном файле программы, с помощью команды SET PATH TO, укажи где искать твой файл MyExitProcedure.prg

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

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

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

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

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

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

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

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

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

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

отдельного MyExitProcedure.prg у автора просто нет
...
Рейтинг: 0 / 0
Закриытие приложения
    #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
Закриытие приложения
    #38851126
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chagoserg, реакция на действия при нажатии на крестик и кнопку выход одинаковые. Процедура MyExitProcedure расположена в конце главного файла и, по идее, должна быть видна из любого места. Прописывать PATH = D:/E58t/programs в конфиг не помагает.
...
Рейтинг: 0 / 0
Закриытие приложения
    #38851134
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenchagoserg, реакция на действия при нажатии на крестик и кнопку выход одинаковые.
такая же ошибка?
faustgreenвыдает ошибку : файл MyExitProcedure.prg не существует.

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

вынесите процедуру MyExitProcedure в отдельный файл
сделайте SET PROCEDURE с указанием этого файла
путь к файлу укажите в SET PATH TO
собственно это я и привёл в выдержке из хелпа
...
Рейтинг: 0 / 0
Закриытие приложения
    #38851147
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
стоит также учесть, что можно использовать относительные пути к каталогу по умолчанию (см. SET DEFAULT, SYS(2003), SYS(2004) )
...
Рейтинг: 0 / 0
Закриытие приложения
    #38851191
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы, но не 1 вариант не подошел. Буду пробывать другие варианты.
...
Рейтинг: 0 / 0
Закриытие приложения
    #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
Закриытие приложения
    #38851200
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenне 1 вариант не подошел. Буду пробывать другие варианты.
может стоит показать код? :)
...
Рейтинг: 0 / 0
Закриытие приложения
    #38851244
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T Вам уже ответил. Добавьте в процедуру выхода выделенную строчку:

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

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

таким образом. после остановки обработки очереди событий нужно собственно сделать выход, например QUIT - зависит от режима, в деббаге достаточно сделать CANCEL
...
Рейтинг: 0 / 0
Закриытие приложения
    #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
Закриытие приложения
    #38857484
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pipos522chagoserg,

попробуй так

это пускай автор темы пробует ;)
...
Рейтинг: 0 / 0
Закриытие приложения
    #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
Закриытие приложения
    #38857635
Фотография pipos522
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chagosergэто пускай автор темы пробует ;)
Сори, промахнулся:-)
...
Рейтинг: 0 / 0
Закриытие приложения
    #38857643
Фотография pipos522
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.foxclub.ru/articles/art39.php Главный (стартовый) файл проекта
...
Рейтинг: 0 / 0
Закриытие приложения
    #38857746
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pipos522 http://www.foxclub.ru/articles/art39.php Главный (стартовый) файл проекта

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

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

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

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

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

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


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




Sergey Ch, У меня уже иммунитет выработался.
...
Рейтинг: 0 / 0
Закриытие приложения
    #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
25 сообщений из 29, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Закриытие приложения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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