Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Возврат значений элементов управления / 22 сообщений из 22, страница 1 из 1
19.03.2018, 22:57
    #39617107
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Прошу ткнуть в нос ссылку если было или пнуть в правильном направлении :)
На форме имеется некоторое количество всевозможных элементов управления (списки, флажки и т.д.). Изменяя их состояние и выбирая определенные значения пользователь формирует условия запроса на выборку. Количество записей, соответствующее заданным условиям, выводится после каждого изменения условия запроса. Задача: сделать что-то типа кнопки "Отмена", нажимая на которую пользователь сможет пошагово возвращаться к предыдущим состояниям элементов управления. Т.е. что-то типа "стека клацаний мышой".
...
Рейтинг: 0 / 0
20.03.2018, 04:27
    #39617143
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
КД, списфическая задача... Думаю готового решения найти будет сложно, тем более на VB/A/6.
Так и попробуй решить за счёт реализации стека. Сам по себе стек несложная структура.
...
Рейтинг: 0 / 0
20.03.2018, 06:07
    #39617151
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Да мне готового и не обязательно. Просто хотел узнать как в принципе решаются такие задачи. Куда-то ведь надо записывать имена контролов и их значения - таблица? Может, какие общие подходы есть (типа удобнее парой таблиц или одной, поля такие-то). Но если совсем никто не пробовал - поизобретаю велосипед )
...
Рейтинг: 0 / 0
20.03.2018, 06:55
    #39617156
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
КД, КМК, задача не сильно тяжёлая (в рамках моих познаний). Написать структуру стека (два класса), создать 2 стека на уровне модуля формы (прямой и обратный) куда и писать каждый чих активного контрола. Потом через кнопачки (или как удобно) читать эти стеки и восстанавливать состояние контролов на тот момент. Я бы даже с таблицами не стал заморачиваться.
...
Рейтинг: 0 / 0
20.03.2018, 07:29
    #39617166
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
...
Рейтинг: 0 / 0
20.03.2018, 07:32
    #39617167
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
ROI, ну да, на основе этого и есть. Только там качество текста (указанная ссылка) отвратное, насколько я глянул.
...
Рейтинг: 0 / 0
20.03.2018, 07:38
    #39617168
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
ПанургROI, ну да, на основе этого и есть. Только там качество текста (указанная ссылка) отвратное, насколько я глянул.
Сори не проверил.
Но pdf проверил.
У меня эта книга на столе (до дыр в свое время затерта)
Сейчас таких нет :)
...
Рейтинг: 0 / 0
20.03.2018, 07:47
    #39617170
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Панургсоздать 2 стека на уровне модуля формы (прямой и обратный)Зачем два? достаточно одного, плюс указатель текущего местоположения в нём.
...
Рейтинг: 0 / 0
20.03.2018, 08:01
    #39617176
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
AkinaЗачем два?Когда назад прокручиваешь переносишь изменение во второй стек. Если начали производить изменения, второй просто сбрасываем.
...
Рейтинг: 0 / 0
20.03.2018, 08:02
    #39617178
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
сейчас пример накидаю.
...
Рейтинг: 0 / 0
20.03.2018, 08:24
    #39617189
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
ПанургКогда назад прокручиваешь переносишь изменение во второй стек. Если начали производить изменения, второй просто сбрасываем.То же самое реализуется и одним буфером с указателем текущего местоположения. При Undo указатель идёт назад, при Redo вперёд, а при корректировке буфер урезается до текущего указателя.
...
Рейтинг: 0 / 0
20.03.2018, 08:37
    #39617199
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Akina, а если вернулись немного назад и начали вводить новые данные? Проще скинуть чем вычислять чего там надо удалить.
...
Рейтинг: 0 / 0
20.03.2018, 08:47
    #39617205
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
ПанургAkina, а если вернулись немного назад и начали вводить новые данные? Проще скинуть чем вычислять чего там надо удалить.
Чего там сложного-то?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Property NewAction(ActionData)
    posession = posession + 1
    ReDim Preserve Buffer(posession)
    Buffer(posession) = ActionData
End Property

Property UndoAction()
    PerformUndo Buffer(posession)
    posession = posession - 1
End Property

Property RedoAction()
    posession = posession + 1
    PerformRedo Buffer(posession)
End Property


При posession = UBound(Buffer) недоступен Redo, при posession = 0 недоступен Undo.
...
Рейтинг: 0 / 0
20.03.2018, 08:54
    #39617210
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
AkinaПанургAkina, а если вернулись немного назад и начали вводить новые данные? Проще скинуть чем вычислять чего там надо удалить.
Чего там сложного-то?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Property NewAction(ActionData)
    posession = posession + 1
    ReDim Preserve Buffer(posession)
    Buffer(posession) = ActionData
End Property

Property UndoAction()
    PerformUndo Buffer(posession)
    posession = posession - 1
End Property

Property RedoAction()
    posession = posession + 1
    PerformRedo Buffer(posession)
End Property



При posession = UBound(Buffer) недоступен Redo, при posession = 0 недоступен Undo.
Интересно, а что ТС об этом думает (классовой борьбе )
...
Рейтинг: 0 / 0
20.03.2018, 09:36
    #39617233
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Панургсейчас пример накидаю.Подзадержался, уходил...
...
Рейтинг: 0 / 0
20.03.2018, 09:38
    #39617236
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Akina, в общем дело вкуса

ROIИнтересно, а что ТС об этом думает (классовой борьбе )Чего думает? Подождёт, посмотрит и решит хочет ли он это делать
...
Рейтинг: 0 / 0
20.03.2018, 14:06
    #39617533
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Всем спасибо за подсказки! Коллеги, я не так быстро думаю ) Не забывайте, я совсем не программер, и большое число моих постов на этом форуме - это в основном вопросы. Тем более, это не основная моя работа, а, скорее, хобби. Тем не менее, думаю что разберусь с примерами и решу как лучше сделать. Другое дело, что это может быть не очень быстро. Но возможность очень занятная и было бы интересно ее реализовать.
...
Рейтинг: 0 / 0
21.03.2018, 19:36
    #39618476
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Панург!
Смотрю Ваш пример со стеком. Можно задать тупой вопрос? Где там кнопка cmdFocus?
...
Рейтинг: 0 / 0
21.03.2018, 20:06
    #39618492
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
КДМожно задать тупой вопрос?можно
КДГде там кнопка cmdFocus?в той же секции где и остальные. Её можно выбрать через окно свойств. Она маленькая, прозрачная, расположена в верхнем левом углу примечание формы (или как оно там...). Служит исключительно для принятия фокуса когда надо перекинуть его и отключить управляющие буфером кнопки. Мне было лень делать перенос на какие-нибудь другие контролы. А почему бы и нет? К тому же это макет.
...
Рейтинг: 0 / 0
21.03.2018, 20:09
    #39618495
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
КД, кстати, можно попробовать использовать там другие события для фиксации изменений (не после обновления). Возможно будет лучше.
...
Рейтинг: 0 / 0
21.03.2018, 21:21
    #39618514
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
Спасибо! Разбираюсь потихоньку...
...
Рейтинг: 0 / 0
22.03.2018, 04:09
    #39618589
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат значений элементов управления
КД, да, там есть небольшой баг - когда уничтожаем стек, не срабатывает событие "Изменён". Тут поправлено.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Возврат значений элементов управления / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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