Как не дать закрыть форму
На страницу Пред. 1, 2, 3
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Ezhik Участник со стажем
Вступление в Клуб: 17.04.2009
|
Ср Ноя 20, 2013 07:59   |
|
Полезность: Нет оценки
|
XLman пишет: | Так автор темы пусть и проверит... Ежик, Вас чем то задели мои утверждения? Можете сами проверить. | Я всегда все проверяю Я категорически против пустой болтовни и непроверенной информации, которую пытаются втолкать остальным (а если она повторяется не в 1 сообщении, то именно втолкать). |
|
 |
XLman Участник со стажем
Вступление в Клуб: 20.02.2008
|
Чт Ноя 21, 2013 08:00   |
|
Полезность: Нет оценки
|
Извиняюсь, немного ввел в заблуждение, похожая просто была задача, но немного другая, тоже связанная с закрытием формы: реальную кнопку OK скрывал от пользователя, а делал "фэйковую" ОК (action=нет) доступную пользователю, т.е. чтобы форма не закрывалась при нажатии на ОК, а можно было предварительно вывести msgbox с вопросом типа "вы уверены?" и после утвердительного ответа инициировалось нажатие реальной кнопки ОК. И вот нажатие "фэйковой" ОК можно было обойти комбинацией SHIFT-OK. |
|
 |
dumpino Участник со стажем
Вступление в Клуб: 13.12.2011
|
Вт Июл 15, 2014 13:26  Re: Как не дать закрыть форму |
|
Полезность: 1
|
VUV пишет: | Форумчане , подскажите , как не дать закрыть форму при нажатии на "крестик" экранной формы ?
PS. Форма закрывается только при нажатии "ОК" |
Версия Рабочего места Оператора 6.11.10.0
Работает такой скрипт:
Код: | Public Sub Form1_OnClose(bExit, bAsk)
'msgbox("Вызов закрытия формы")
bExit = False
bAsk = False
End Sub |
весь код клиент-скрипта выглядит так:
Код: | Public Function Main(LastControl)
If Dest.Text <> "" Then
If (LastControl is OK) Then
DO 'исполнение сценария
Execute Dest.Text
Call Form1.ScriptServerValidate(OK, "OK")
Loop While Dest.Text <> ""
Else
Execute Dest.Text
Dest.Text = ""
End If
End If
Main = True
End Function
Public Sub Form1_OnClose(bExit, bAsk)
'msgbox("Вызов закрытия формы")
bExit = False
bAsk = False
End Sub |
кнопку Cancel я скрыл совсем от глаз. На форме в итоге работает только кнопка OK.
п.с. оставляю для потомков) |
|
 |
Zab Участник
Вступление в Клуб: 30.08.2013
|
Пн Апр 13, 2015 14:42   |
|
Полезность: Нет оценки
|
Добрый день!
Аналогичная задача, только для версии 116 Навигатора.
Хоть в документации и написано, что:
Цитата: | Примечание
Обработка события OnClose возможна, начиная с 116 версии АРМа "ЦФТ – Навигатор". |
на самом деле, это не так.
По крайней мере, в 116.27 не работает. Событие OnClose не генериться, соответственно, в процедуру Form1_OnClose выполнение не попадает. Попытка направить в процедуру "силой" (при обработке LastControl) также без результата: код процедуры выполняется, но форма закрывается, несмотря на Exit = false.
Тут же проверяю этот же код в версии 117.24 - все ОК.
Гуру, подскажите, как быть?
Может, есть возможность как-то вернуть исполнение в Main? |
|
 |
Zab Участник
Вступление в Клуб: 30.08.2013
|
Вт Апр 14, 2015 09:12   |
|
Полезность: Нет оценки
|
В общем, решил проблему следуя совету Amper:
Цитата: | Но можно реализовать с помощью двух операций: основная при запуске через PLPCALL выводит окно второй операции, которое и видит пользователь При этом, основная следит за тем, как вышел пользователь - через OK или CANCEL, и, если нужно, запускает окно заново. Так, кажется, должно работать.
Хоть и костыль, но если уж зачем-то такое понадобилось... |
Понятно, что костыль. Понятно, что костыль кривоватый ((.
Поэтому если вдруг кто-нибудь предложит более красивое решение - буду оч рад ).
Вот код клиент-скрипта операции, которая вызывает вторую:
Код: |
Public Function Main(LastControl)
If (LastControl Is Nothing) Then
' закольцуем вызов запускаемой операции пока юзер не нажмет ОК
Do
result = Form1.ScriptPlayEx("<% PLPCALL %THIS%.[OPER]() %>")
Loop While result = 0
' закроем запускающую операцию
Call Form1.ScriptPostEvent(OK, "CLICK")
End If
Main = True
End Function
|
|
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|