|
|
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
Существует такая задача: Есть форма, на ней кнопки: Сохранить, Сохранить и выйти, Выйти не сохраняя. Кнопка закрытия формы заблокирована и недоступна. Цель разблокировать кнопку закрытия и корректно спросить у пользователя варианты дальнейших действий при нажатии на нее, т.е. Если какие то данные в форме были изменены, то спросить Сохранить данные? (Да, нет, отмена) С да и нет вроде бы все понятно, сохраняем или не сохраняем и выходим. При отмене возращаемся в форму (надо вернутся в то состояние которое было) т.е. если данные редактировались, то надо предоставить возможность их отмены. В этом случае (когда данные редактировались, свойство me.Dirty=True (после сохранения и до редактирования оно me.Dirty=False) Но вот какая проблема, если вешаем весь этот код с проверкой и сообщениями на событие выгрузки формы (onUnload), то свойство Dirty уже становится не актуально, т.е. даже если мы не закроем форму, то запись уже сохранена... На какое событие мне повесить весь этот код, или как реализовать все это иначе чтоб при возвращении в форму все было так как оставили, т.е. если данные были изменены и несохранены, то так и осталось при возвращении. Если это вешать на событие AfterUpdate, то как мне узнать, что этот AfterUpdate инициирован функцией закрывающей форму. Буду благодарен если кто подскажет какие нибудь идеи. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 11:36:32 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
OnClose ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:03:30 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
TatianaTOnClose Событие OnClose наступает после события onUnload и отменить его нельзя! или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:09:28 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
закрытие формы по кнопке закрытия, если данные были изменены, вызовет обработку события "До обновления". Проще всего повесить на BeforeUpdate запрос на подтверждение сохранения или отмену изменений: If MsgBox("Сохранить изменения?", vbQuestion + vbYesNo, "Внимание") = vbNo Then Me.Undo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:16:27 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
мне хотелось бы именно вариант с закрытием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:19:28 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
Вариант с закрытием - после вызова события OnClose (по кнопочке закрытия) иметь возможность оставить форму открытой? Так, кажется нельзя, ведь нет возможность сделать cancel=true. Если обязательно нужна кнопка закрытия, можно сделать ее имитацию - свойсво формы - без границ, и сверху нарисовать псевдографикой свою кнопку закрытия. А на нее (на нажатие) уже вещать , что угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:27:11 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
А ты вообще не проверяй Dirty! А все проверяй на BeforeUpdate. При попытке закрыть форму, находящуюся в состоянии редактирования, прежде всего сработает BeforeUpdate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:34:59 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
tatiana_yВариант с закрытием - после вызова события OnClose (по кнопочке закрытия) иметь возможность оставить форму открытой? Так, кажется нельзя, ведь нет возможность сделать cancel=true. Если обязательно нужна кнопка закрытия, можно сделать ее имитацию - свойсво формы - без границ, и сверху нарисовать псевдографикой свою кнопку закрытия. А на нее (на нажатие) уже вещать , что угодно. Зачем такие сложности? Определить на форме MinMaxButtons = 0, ControlBox = No, CloseButton = Noда еще добавить Код: plaintext 1. 2. 3. и попробуйте вообще закрыть форму! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:42:57 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
ТАк если убрать все кнопки , кнопки закрытия же вообще не будет, а , я так поняла, стоит задача именно визуально закрывать форму через крестик без всяких лишних кнопок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:56:14 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
Таки нет - он хочет закрывать форму своей кнопкой: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 12:57:38 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
и строчной ниже Цель разблокировать кнопку закрытия и корректно спросить у пользователя варианты дальнейших действий при нажатии на нее, т.е. Автор, наверное, просто угорает над веткой:)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:04:17 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
авторТаки нет - он хочет закрывать форму своей кнопкой: Свои кнопки у меня работают, я их описал. а крестик , т.е. стандартная кнопка закрытия окна - заблокирован. Мне надо задействовать этот крестик. И если юзверь нажал на него то спросить что он, юзверь желает. ИИ если пользователь ошибся, то вернутся в ворму и шоб там було усе як було... т.е. форма должна остатся в том состоянии как и до выхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:25:50 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
Rivkin DmitryА ты вообще не проверяй Dirty! А все проверяй на BeforeUpdate. При попытке закрыть форму, находящуюся в состоянии редактирования, прежде всего сработает BeforeUpdate А как мне узнать что именно этот BeforeUpdate вызван процедурой закрытия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:28:20 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
Rivkin Dmitry Таки нет - он хочет закрывать форму своей кнопкой: авторЕсть форма, на ней кнопки: Сохранить, Сохранить и выйти, Выйти не сохраняя. Кнопка закрытия формы заблокирована и недоступна Я именно хочу задействовать стандартный крестик. На сколько я знаю закрите формы имеет такую цепочку. после обновления afterupdate выгрузка Unload закрытие close я тут вижу 2 варианта решения моей проблемы: 1. Есть событие которое возникает раньше всех перечисленных выше и однозначно, что это событие участвует в цепочке событий по закрытию формы 2. Или на afterupdate как то определить, что форма собирается закрыватся... ??????????????? что скажете ???????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 13:35:46 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
1/ чтобы отменить закрытие -надо с неизбежностью проверять в OnUnload (тогда и закрытие по {Ctrl}+{F4} перекрывается, и значения переменных формы еще не очищены). 2/ чтобы откатить (при этом) изменения - потребуется хапать/очищать данные (об OldValue) на (первом после Current) BeforeUpdate в некие переменные формы и, возможно, устанавливать флаги. 3/ Есть вариант накопления массивов OldValue() на всех BeforeUpdate после прохождения Current, и пошаговом откате, но потребуется продумать диалог пошаговой откатки. 4/ Проблема в логике откатов могабыть неприятной при правке той же записи в параллельных сеансах других юзеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 14:10:39 |
|
||
|
Перед закрытием формы спрашивать и... оставлять как было.
|
|||
|---|---|---|---|
|
#18+
А можно ли определить новое собитие для формы ? помоему я это где то встречал допустим определить новое событие OnCloseButtonDown и в перед, кнопка нажата, но еще ни чего ни кто не делал, вот в этот то момент... Короче это тема нового топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2004, 14:53:44 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1576&tid=1672447]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 341ms |

| 0 / 0 |
