powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не работает красный крестик
64 сообщений из 64, показаны все 3 страниц
Не работает красный крестик
    #37621503
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток!
Есть задача, написанная на VFP 9.0, работает без проблем, из ее можно выйти нажатием кнопки «выход» или нажатием красного крестика. Но периодически возникает проблема, после открытия определенных форм, выход из приложения возможен только по кнопке «выход», КРАСНЫЙ КРЕСТИК НЕ РАБОТАЕТ, подскажите, в чем причина всех бед!?
Чаще всего, крестик отказывает после работы с Excel.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37621673
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вы пользователь или программист?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37621813
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жесть.

Этоже извесный баг, крестик нужно перекрасить в зеленый, тогда все проблемы должны решиться.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37621861
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если задавший вопрос пользователь, логика объяснима.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37621985
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grin,

Не вопрос, скажи как?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37621994
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ffffffffffffffff,

И то и другое, хотя, какая разница!
Вопрос в чем, почему не закрывается форма?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622155
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если открыто модальное окно - крестик не работает.

Действия выполняемые по крестику прописываются в ON SHUTDOWN
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622250
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вооооо уже информативней,
теперь покажите еще код, который лежит в ON SHUTDOWN
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622332
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrinВооооо уже информативней,
теперь покажите еще код, который лежит в ON SHUTDOWN
Хватит троллить, отслеживай кто спрашивает и кто отвечает
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622372
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Dima T,

Пардон, был пьян, исправлюсь
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622431
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grin,

А страничка просмотра в Excel, считается за модальную форму?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622454
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AllkayА страничка просмотра в Excel, считается за модальную форму?
За модальную форму считается только модальная форма :)
Отсюда не видно что там за "страничка просмотра в Excel" у тебя. Как именно эксель используется?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622479
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Используется он только для «предварительного-просмотра», перед выводом на печать.

SET OLEOBJECT ON
tmpSheet = createobject('excel.application')
XLApp = tmpSheet.application
XLApp.visible = .F.
* команды заполнения отчета

XLApp.visible = .t.
XLApp.Sheets("Лист1").PrintPreview
XLApp.DisplayAlerts=.f.
XLApp.Quit
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622496
Попробуй закомментировать
Код: vbnet
1.
XLApp.DisplayAlerts=.f. 


Возможно, в Экселе возникает ошибка, а из-за этой команды ты ее не видишь.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622534
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fffffffffffffffffffff,

Если закоментить

XLApp.DisplayAlerts=.f.

Он покажет страничку предварительного просмотра, после ее закрытия перехожу непосредственно в Excel, и он спрашивает «Сохранить изменения в файле»
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622547
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подобным образом эксель не использовал никогда, твой код не запускается просто так, сделай рабочий пример.
Есть подозрение что фокс ждет закрытия экселя на этой строке:
Код: sql
1.
XLApp.Sheets("Лист1").PrintPreview


иначе пользователь не успеет ничего посмотреть и эксель закроется строкой
Код: sql
1.
XLApp.Quit



А пока фокс ждет - закрыть его нельзя.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622551
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот поэтому и не работает, как надо. Открой хелп в Экселе и посмотри параметры команды сохранения. Она должна у тебя быть дальше по коду.
Save или SaveAs.
Сохранение должно быть без подтверждения или его вообще не должно быть. Этого кроме тебя никто не знает.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622575
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FfffffffffffffffВот поэтому и не работает, как надо. Открой хелп в Экселе и посмотри параметры команды сохранения. Она должна у тебя быть дальше по коду.
Save или SaveAs.
Сохранение должно быть без подтверждения или его вообще не должно быть. Этого кроме тебя никто не знает.
DisplayAlerts=.f. тут не причем. Все правильно если не надо чтобы эксель вопросы задавал по сохранению перед закрытием книги.
.F. - Равносильно тому что эксель сам ответит "не сохранять".
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37622613
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с Dima T, DisplayAlerts тут не причем

2Allkay
попробуйте перед вызовом Excel добавить
_vfp.AutoYield=.f.
фокс не будет ждать выполнение очереди виндоус

ну и покажите что у Вас в Destroy и QueryUnload формы
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37623473
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А про ON SHUTDOWN никто читать доки не пробовал ?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37623715
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сам то пробовал почитать??

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Определяет команду или программный модуль, который будет выполнен при попытке завершить работу системы Visual FoxPro, или ОС Microsoft Windows.

 
ON SHUTDOWN [Команда]
 


Параметры
Использование команды ON SHUTDOWN без параметра Команда очищает текущую установку команды ON SHUTDOWN.

Комментарии
Команда, которая задана в рассматриваемой ON SHUTDOWN выполняется при выполнении попытки выхода из системы Visual FoxPro. 
Если вы пытаетесь завершить работу ОС Microsoft Windows при активном приложении Visual FoxPro, от операционной системы 
управление передается в приложение Visual FoxPro, в команду, заданную при ON SHUTDOWN, она начинает выполняться.

Обычно, в качестве параметра в команде ON SHUTDOWN указывается команда DO для выполнения специального пользовательского программного модуля, который отображает Специальный Диалоговый бокс Exit. 
В рассматриваемом диалоговом боксе можно задать вопрос о продолжении выполнения пользовательского приложения в системе Visual FoxPro.  
Если приложение закрывается, то можно корректно закрыть файлы, сохранить параметры, выполнить корректную команду QUIT. 
Если приложение не закрывается, то можно вернуть управление обратно данному приложению.




Ну и чем ON SHUTDOWN лучше метода DESTROY формы?
Понятно что для порядка ON SHUTDOWN должен быть, но и без него все нормально работает.
Только что спецом пересобрал приложение на модальном топлевелформ без ON SHUTDOWN, приложение закрывается корректно.
в DESTROY формы прописано
Код: sql
1.
2.
3.
CLOSE TABLES ALL 
CLEAR EVENTS 
QUIT
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37626459
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grin,

INIT
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
PARAMETERS r_n,for_s
PUBLIC for_send
for_send=for_s
DODEFAULT()
SET DELETED ON
SET DATE GERMAN
SET CENTURY ON
	ThisForm.TxtRegNumb.Value=''
	IF r_n==''
	ThisForm.TxtRegNumb.SetFocus()
	ELSE
	ThisForm.TxtRegNumb.Value=ALLTRIM(r_n)
	thisform.txtRegNumb.KeyPress(13)
	ENDIF


LOAD
Код: sql
1.
2.
3.
4.
5.
CREATE CURSOR cPoint (PointNumb C(9), PointSod C(254), DateOut D(8), DateNew D(8), ;
      DateFact D(8), DateCansel D(8), TabMark N(6), FioMark C(30), PointRem C(254))
CREATE CURSOR cPointIsp (PointNumb C(9), DateOut D(8), DateNew D(8), DateFact D(8), ;
      DateCansel D(8), TabMark N(6), PointRem C(254))
      PUBLIC cRab



А Destroy и QueryUnload на форме Нет!?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37626726
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Allkay,

1.Попробуйте добавить в LOAD (по хорошему нужно добавить в main приложения)
_vfp.AutoYield=.f.

2. Так при выходе из этой формы должен происходить выход из Вашего приложения??
Если таки да, то в DESTROY формы добавьте
CLOSE TABLES ALL
CLEAR EVENTS
QUIT
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37626793
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grin,

Добавил все, во все процедуры, как было сказано, но все равно, после просмотра в Excel, крестик не закрывает программу.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37626813
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay, читал что я писал?
Dima TПодобным образом эксель не использовал никогда, твой код не запускается просто так, сделай рабочий пример.
Есть подозрение что фокс ждет закрытия экселя на этой строке:
Код: sql
1.
XLApp.Sheets("Лист1").PrintPreview


иначе пользователь не успеет ничего посмотреть и эксель закроется строкой
Код: sql
1.
XLApp.Quit



А пока фокс ждет - закрыть его нельзя.

Проверь что фокс не подвисает на строке XLApp.Sheets("Лист1").PrintPreview
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37626876
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

При нажатии кнопки «печать» запускается процедура которая открывает форму у которой прописана процедура KeyPress:

Код: sql
1.
2.
3.
4.
5.
 
      DO FORM frm_Print_regKard NAME frmPrint WITH cRegNumb,0
      frmPrint.Visible=.f.
      frmPrint.Refresh()
      RELEASE frmPrint


А это код процедуры KeyPress, на форме frm_Print_regKard:

Код: 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.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
SET OLEOBJECT ON
TRY 
  tmpSheet = createobject('excel.application')
  XLApp = tmpSheet.application
  XLApp.visible = .F.		&& F
  full_path=cPathExe+'Report\xls_pech_upoln.xls'
  IF for_send=1
    COPY FILE (full_path) TO PathTmp+nRegNumb+'.xls'
    XLApp.WorkBooks.open(PathTmp+nRegNumb+'.xls')
  ELSE
    XLApp.WorkBooks.open(full_path)
  ENDIF
  XLSheet = XLApp.ActiveSheet
  SET DATE GERMAN 
  WITH thisform 
    XLApp.sheets("Лист2").cells(4,2).value=ALLTRIM(nLeadFio)
    XLApp.sheets("Лист2").cells(5,2).value=ALLTRIM(nAutorFio)+', № телефона: '+LEFT(nAutorPhone,2)+'-'+RIGHT(nAutorPhone,2)
    XLApp.sheets("Лист1").select
    XLApp.cells(1,3).Value=nRegNumb
    IF ThisForm.IkPz=1 
	  XLApp.cells(1,11).Value='ПЗ'
    ENDIF
    XLApp.cells(2,2).Value=ALLTRIM(nDocName)+" №"+ALLTRIM(nDocNumb)+" от "+DTOC(nDocDate)+" "+ALLTRIM(nDocTitle)
    XLApp.cells(4,2).Value=ALLTRIM(nIspFio)
    XLApp.cells(4,7).Value=ALLTRIM(nIspNaStruct)
    XLApp.cells(4,10).Value=nTabIspolnit
    XLApp.cells(6,2).Value=ALLTRIM(nKurFio)
    XLApp.cells(6,7).Value=ALLTRIM(nKurNaStruct)
    XLApp.cells(6,10).Value=nTabKurator
    SELECT cPoint
    SET DELETED ON
    COUNT TO kol_zap
    GO TOP 
    XLApp.sheets("Лист2").select
    XLApp.Range(XLApp.Sheets("Лист2").cells(1,1),XLApp.Sheets("Лист2").cells(1,10)).Select 
    XLApp.Selection.Copy
    XLApp.sheets("Лист1").select
    FOR i=1 TO kol_zap
      XLApp.Range(XLApp.Sheets("Лист1").cells(10+i-1,1),XLApp.Sheets("Лист1").cells(10+i-1,10)).Select
      XLApp.ActiveSheet.Paste
      XLApp.Sheets("Лист1").cells(10+i-1,1).Value=ALLTRIM(cPoint.PointNumb)
      XLApp.Sheets("Лист1").cells(10+i-1,2).Value=cPoint.DateOut
      IF !EMPTY(cPoint.DateNew)
        XLApp.Sheets("Лист1").cells(10+i-1,4).Value=cPoint.DateNew
      ENDIF 
      IF !EMPTY(cPoint.DateFact)
        XLApp.Sheets("Лист1").cells(10+i-1,6).Value=cPoint.DateFact
      ENDIF 
      IF !EMPTY(cPoint.DateCansel)
        XLApp.Sheets("Лист1").cells(10+i-1,7).Value=cPoint.DateCansel
      ENDIF
      IF !EMPTY(cPoint.TabMark)
        XLApp.Sheets("Лист1").cells(10+i-1,8).Value=ALLTRIM(cPoint.FioMark)+' т/н '+ALLTRIM(STR(cPoint.TabMark))
      ENDIF 
      XLApp.Sheets("Лист1").cells(10+i-1,9).Value=ALLTRIM(cPoint.PointRem)
      SKIP 
    ENDFOR
    XLApp.sheets("Лист2").select
    XLApp.Range(XLApp.Sheets("Лист2").cells(4,1),XLApp.Sheets("Лист2").cells(6,2)).Select
    XLApp.Selection.Copy
    XLApp.sheets("Лист1").select
    XLApp.Range(XLApp.Sheets("Лист1").cells(10+kol_zap+1,1),XLApp.Sheets("Лист1").cells(10+kol_zap+3,2)).Select
    XLApp.ActiveSheet.Paste
    GO TOP 
    XLApp.sheets("Лист2").select
    XLApp.Range(XLApp.Sheets("Лист2").cells(3,1),XLApp.Sheets("Лист2").cells(3,10)).Select
    XLApp.Selection.Copy
    XLApp.sheets("Лист1").select
    FOR i=1 TO kol_zap
      XLApp.Range(XLApp.Sheets("Лист1").cells(10+kol_zap+3+i,1),XLApp.Sheets("Лист1").cells(10+kol_zap+3+i,10)).Select
      XLApp.ActiveSheet.Paste
      XLApp.Sheets("Лист1").cells(10+kol_zap+3+i,1).Value=ALLTRIM(cPoint.PointNumb)+' '+ALLTRIM(cPoint.PointSod)
      stroka=XLApp.Sheets("Лист1").cells(10+kol_zap+3+i,1).Value
      XLApp.Sheets("Лист1").Rows(10+kol_zap+3+i).Select
      kol_simv=LEN(stroka)
       IF kol_simv>118 AND kol_simv<236
        XLApp.Selection.RowHeight = 2.5*XLApp.Selection.RowHeight
      ELSE 
        IF  kol_simv>=236
          XLApp.Selection.RowHeight = 3.5*XLApp.Selection.RowHeight
        ENDIF 
      ENDIF 
      SKIP 
    ENDFOR
  XLApp.Range(XLApp.cells(10+2*kol_zap+6,1),XLApp.cells(10+2*kol_zap+6,1)).Select
  ENDWITH
  IF for_send=1
    XLApp.DisplayAlerts=.f.
    XLApp.ActiveWorkbook.Save()
    XLApp.Quit
    SET OLEOBJECT ON
    SET DATE GERMAN 
    IF nEmail>' '
     *komu='IvcEtd@transistor.com.by'
     komu=ALLTRIM(nEmail)
      failik=PathTmp+nRegNumb+'.xls'
      nomer=nRegNumb
      send_ready=.t.
      TRY 
        tmpApplicat= createobject('NovellGroupWareSession')
        GWApp = tmpApplicat.application
        GWRootAccount = GWApp.Login('','')
        GWFolders = GWRootAccount.AllFolders
        GWMessage=GWFolders.item[1].Messages.Add('uaski')
        WITH GWMessage
          TRY 
            .Attachments.Add(failik)
            .FromText='УАСКИ'
            .ReplyRequested=0
            .NotifyWhenOpened=0
            .NotifyWhenDeleted=0
            .BodyText.PlainText='На вас выписана новая ИК р/н:('+nomer+')'
            .Subject.PlainText='УАСКИ'
            CATCH TO oException WHEN .t. 
            MESSAGEBOX('Проверьте имя файла прикрепления: '+failik)
            send_ready=.f.
          ENDTRY
          TRY
            .Recipients.Add(komu)
            IF send_ready
              outMail=.Send()
              outMail.Delete()
            ENDIF 
            CATCH TO oException WHEN .t. 
            MESSAGEBOX('Не могу отправить письмо: '+komu)
          ENDTRY 
        ENDWITH 
        catch TO oExcept WHEN .t.
        MESSAGEBOX('Пожалуйста установите GroupWise'+CHR(10)+CHR(13);
                  +'Письмо:('+komu+') не отправлено'+CHR(10)+CHR(13);
                  +'Имя файла с ИК:('+failik+')')
      ENDTRY 
    ENDIF  
  ELSE
    _vfp.AutoYield=.f.
    XLApp.visible = .t. 
    XLApp.Sheets("Лист1").PrintPreview
    XLApp.DisplayAlerts=.f. 
    XLApp.Quit
  ENDIF 
  CATCH TO oExcept WHEN .t.
  MESSAGEBOX(SYS(2018))
ENDTRY 

RETURN
thisform.Release()
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37626986
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставь MessageBox() после PrintPreview и посмотри когда сообщения выходит - сразу при выводе предпросмотра или после выхода из экселя?
Код: sql
1.
2.
XLApp.Sheets("Лист1").PrintPreview
MessageBox('Test')



Кроме "крестика" на другие действия фокс реагирует? Кнопки нажимаются, текст в контролы пишется?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627021
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
      DO FORM frm_Print_regKard NAME frmPrint WITH cRegNumb,0
      frmPrint.Visible=.f.
      frmPrint.Refresh()
      RELEASE frmPrint


Это ерунда какая-то написана. KeyPress() кнопки никак не вызывается.
frm_Print_regKard форма случайно не модальная? Свойство WindowType что стоит?
RELEASE frmPrint - не уничтожает форму, только переменную frmPrint, надо так
Код: sql
1.
frmPrint.Release()
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627045
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Код: sql
1.
2.
3.
4.
      DO FORM frm_Print_regKard NAME frmPrint WITH cRegNumb,0
      frmPrint.Visible=.f.
      frmPrint.Refresh()
      RELEASE frmPrint


Это ерунда какая-то написана. KeyPress() кнопки никак не вызывается.
frm_Print_regKard форма случайно не модальная? Свойство WindowType что стоит?
RELEASE frmPrint - не уничтожает форму, только переменную frmPrint, надо так
Код: sql
1.
frmPrint.Release()



Процедура KeyPress стоит не совсем на форме а на компоненте txtRegNumb (TextBox)
WindowType 0 - Modeless
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627066
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПоставь MessageBox() после PrintPreview и посмотри когда сообщения выходит - сразу при выводе предпросмотра или после выхода из экселя?
Код: sql
1.
2.
XLApp.Sheets("Лист1").PrintPreview
MessageBox('Test')



Кроме "крестика" на другие действия фокс реагирует? Кнопки нажимаются, текст в контролы пишется?

Сообщение выдает после закрытия Excel.
Все работает, сома форма закрывается, и по кнопке выход и по нажатию крестика, НО по нажатию крестика не закрывается само приложение (основное меню)!?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627079
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AllkayDima TПоставь MessageBox() после PrintPreview и посмотри когда сообщения выходит - сразу при выводе предпросмотра или после выхода из экселя?
Код: sql
1.
2.
XLApp.Sheets("Лист1").PrintPreview
MessageBox('Test')



Кроме "крестика" на другие действия фокс реагирует? Кнопки нажимаются, текст в контролы пишется?

Сообщение выдает после закрытия Excel.
Все работает, сома форма закрывается, и по кнопке выход и по нажатию крестика, НО по нажатию крестика не закрывается само приложение (основное меню)!?

А что, должно по крестику приложение закрываться? Вроде разговор шел о том, что не закрывается форма. Поставь в Dystroy формы CLEAR EVENTS.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627111
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Да, приложение, с формой проблем нет, она закрывается.
Поставил во всех задействованных формах в Dystroy
Код: sql
1.
2.
3.
CLOSE TABLES ALL 
CLEAR EVENTS 
QUIT


Все равно не закрывается.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627129
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

Зачем же во всех?
Ты обясни толком, что там у тебя, что-то типа:
есть форма главная, из нее вызывается другая форма и из этой другой формы вызывается Excel. Я так понимаю, у тебя по крестику как раз не закрывается эта другая форма или нет? Причем здесь тогда все приложение?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627139
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни огромное сори. Я видно что-то затупил, не в ту форму добавил

Код: sql
1.
2.
3.
CLOSE TABLES ALL 
CLEAR EVENTS 
QUIT



А когда добавил куда надо то в месте с формой закрывается приложение. Это хорошо что закрывается, но плохо что закрывает приложение раньше времени. На случай, если пользователь закроет форму просмотра в Excel, и захочет выбрать, посмотреть еще что ни будь, не нужно приложение закрывать.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627156
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AllkayСообщение выдает после закрытия Excel.
Как я и подозревал - у тебя фокс "висит", ждет закрытия экселя. Не должно быть этого. Меняй способ вызова экселя.
Пока эту проблему не решишь, не будет фокс закрываться крестиком.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627157
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627168
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что не работает.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627183
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

А зачем вообще нужна эта форма, из которой открывается Excel? При выборе нужного пункта меня запускай процедуру формирования отчета в Excel.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627206
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627210
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

(Предыдущее сообщение пустое, промазал по клавише.)
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627293
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

Ну на кнопке печать и пиши код вызова Exceля. Форма-то зачем? При закрытии Екселя вернешься в эту же форму.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627344
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Не знаю, это не я писал. Но после закрытия Excel, я и выхожу на эту форму.
Код представлен выше!
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627351
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

Так эта форма не закрывается крестиком? А кнопка выхода работает?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627358
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Allkay,

Уууу как все запущено...
Приложение, скорее всего писали не Вы??

ищите основной prg, он в проекте выделен жирным

добавьте в него такой код

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ON SHUTDOWN DO release_app

PROCEDURE release_app
m.ans=MESSAGEBOX('Вы действительно желаете выйти из программы??',36,'Определитесь!')
	IF m.ans=6
		CLOSE TABLES all
		CLEAR EVENTS 
		quit
	ENDIF 
RETURN
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627448
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Форма закрывается.
После закрытия Формы не закрывается само приложение!
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627464
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

Это в форме с гланым меню? А по кнопке "Выход"?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627487
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Сообщение оно выдавало после закрытия Excel потому что из-за открытого Excel я не видел сообщения.
А было как:
Запуск Excel → Предварительный –просмотр →Сообщение (“Test”) → Запрос о сохранении Файла Excel → Форма
После ответа на запрос о сохранении Файла Excel, сообщение (“Test”) еще висит.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627495
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

По кнопке выход все работает! Приложение закрывается.
Код: sql
1.
2.
3.
4.
          IF oPers.CleanUp()
  	 oPerS.Cleanup2
	 RELEASE oPers	
          ENDIF
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627503
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не запущено а еще не изучено.

Добавил

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ON SHUTDOWN DO release_app

PROCEDURE release_app
m.ans=MESSAGEBOX('Вы действительно желаете выйти из программы??',36,'Определитесь!')
	IF m.ans=6
		CLOSE TABLES all
		CLEAR EVENTS 
		quit
	ENDIF 
RETURN



И тишина не закрывается и ни какого сообщения.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627505
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

А что в функции CleanUp()?
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627550
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

oPers.CleanUp()


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
LOCAL lnForm, lnFormToClose
* Заремлено на отладку
if .F.
 IF getmessage(QUIT_MESS,3+32+0,QUIT_CAPT) <> 6 THEN
 	RETURN .F.
 ENDIF	
endif 

LOCAL loForm

THIS.lQuitting = .T.
FOR EACH loForm IN application.Forms
	IF TYPE("loForm") == "O" AND loForm.Baseclass == "Form"
	
		IF !loForm.QueryUnload()

		ENDIF
		loForm.Release()
	ENDIF
ENDFOR
RETURN .T.



Cleanup2

Код: sql
1.
2.
3.
4.
5.
6.
_screen.caption = this.cOldMainWindowCaption
CLEAR EVENTS
SET SYSMENU TO DEFAULT
POP KEY   &&EON
this.ShowToolBars()
this.lIsClean = .T.




ShowToolBars()

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
LOCAL nPos
 _Screen.HIDE()
_Screen.BackColor=16777215
FOR nPos = 1 TO ALEN(This.aToolBars, 1)
  IF This.aToolBars[nPos,2]
    SHOW WINDOW (This.aToolBars[nPos,1])
  ENDIF
ENDFOR
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37627579
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Do

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
This.DoMenu(This.cMainMenu)
DO WHILE .T.
	
	READ EVENTS
	IF THIS.Cleanup()
		THIS.Cleanup2
		EXIT
	ENDIF
ENDDO



Destroy

Код: sql
1.
2.
3.
4.
5.
6.
IF !This.lIsClean
  This.CleanUp()
ENDIF
IF gnHandle>0
=SQLDISCONNECT(gnHandle)
ENDIF
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628237
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AllkayDima T,
Сообщение оно выдавало после закрытия Excel потому что из-за открытого Excel я не видел сообщения.

Тогда эксель ни при чем. Внимательнее надо быть.
Allkay
Код: sql
1.
2.
ON SHUTDOWN DO release_app
...


Неправильно у тебя написано. ON SHUTDOWN должен содержать две строки:
Код: sql
1.
2.
on shutdown
clear events


MessageBox() можешь оставить если надо, остальное лишнее. Весь код по завершению приложения должен быть в главном модуле после READ EVENTS
Задача ON SHUTDOWN - запустить этот код.

И кнопка "Выход" которая работает как устроена? Так?
Код: sql
1.
2.
DEFINE PAD m_exit OF _MSYSMENU PROMPT "Выход" COLOR SCHEME 3 
ON SELECTION PAD m_exit OF _MSYSMENU clear events
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628377
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Кнопка выход из приложения:
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628418
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allkay,

STEP ON зачем? Это для отладки
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628419
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

Да, я его поставил на время что бы отследить порядок выполнения программы, и забыл снять.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628520
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG, Dima T,

Я кажется, нашел причину.
Вот в этом коде:
Код: sql
1.
2.
3.
4.
      DO FORM frm_Print_regKard NAME frmPrint WITH cRegNumb,0
      frmPrint.Visible=.f.
      frmPrint.Refresh()
      RELEASE frmPrint


Если закомментить
Код: sql
1.
frmPrint.Visible=.f.


то все хорошо работает и все закрывается с Excel и без его.

У меня не подключён принтер, а он, наверное, отправляет запрос на принтер и ждет ответа, а так как ответа нет, получается, что висит запрос и крестик не работает.

Ну, или как-то так!
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628521
Grin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Allkay,

Учится лучше пробуя писать самому, а в чужой код ходить подсмотреть как это сделано у когото (как в шпаргалку подсмотреть).
В качестве примера можно брать Solution, Tastrade, Northwind из поставки самого фокса.
Возьми почитай серию статей "Для начинающих" на foxclub.ru (автор, ели не запамятовал Володя Максимов) - это лучшее для начала.
Если с англицким трабл - скачай хелп к 9 на руском, благо его фокспрошники с foxclub перевели, ссылку найдеш на сайте клуба.
Далее скачай офлайн форум фоксклуба (не уверен что он обновляется, нету у меня туда доступа, корп. сеть мать ее) - там можно найти ответ практически на любой вопрос.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628526
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grin,

Спос за подсказку, обязательно посмотрю.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628615
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AllkayIgorNG, Dima T,

Я кажется, нашел причину...
Я же тебе писал выше:
RELEASE frmPrint - не уничтожает форму, только переменную frmPrint, надо frmPrint.Release()

Код: sql
1.
2.
3.
4.
      DO FORM frm_Print_regKard NAME frmPrint WITH cRegNumb,0
      frmPrint.Visible=.f.
      frmPrint.Refresh()
      frmPrint.Release()
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628639
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри у формы frm_Print_regKard что в QueryUnload() прописано.
Если в QueryUnload() выполнить nodefault - форма крестиком не закроется, и ON SHUTDOWN не сработает.
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628677
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Да, так точно. Так тоже работает.
Благодарю за помощь и терпение!
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628682
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПосмотри у формы frm_Print_regKard что в QueryUnload() прописано.
Если в QueryUnload() выполнить nodefault - форма крестиком не закроется, и ON SHUTDOWN не сработает.

Там совсем ни чего не прописано!
...
Рейтинг: 0 / 0
Не работает красный крестик
    #37628689
Allkay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Нет, после удаления этой переменной, приложение по крестику, Закрывается!
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не работает красный крестик
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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