powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вернуть предыдущее значение контрола?
10 сообщений из 10, страница 1 из 1
Как вернуть предыдущее значение контрола?
    #35229589
AlexKubrak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть форма с гридом, привязанным к курсору и множеством контролов (checkbox-ы, Combobox, TextBox и т.д.) не связанных с курсором (работаю с ними через Value).
Юзер управляя контролами получает в курсор новые данные, которые может править.
Если он, например, через комбо выберет что-то, отличное от того что было курсор перезагрузится новыми данными и то что он там наисправлял потеряется, если конечно он не нажал до этого "Сохранить". По InteractiveChange() я могу проверить - сохранил или нет и предложить "Сохранить? Да, Нет, Отмена"

Внимание, вопрос! Как в случае "Отмены" вернуть состояние контрола на первоначальное?

Заранее, спасибо!
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35229688
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для этого давно изобретена и работает буферизация. Обсуждалась 1001 раз и здесь, и на www.foxclub.ru Поиск в помощь.
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35229774
AlexKubrak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пользовался поиском, но обычно это вопросы о контролах связаных с таблицей и их буферизации, а то что мне надо не нашел. Может не так искал?
У меня контролы не связаны ни с какой таблицей, их более 10, многие между собой связаны "логически" через Valid().
Каким образом организовать буферизацию если контролы к ни к базе ни к курсору не подвязаны. Не ужели для каждого контрола по GotFocus() сохранять Value в кучу локальных переменных?
Вопрос скорее, касается порядка выполнения событий контрола, т.е. на каком этапе мне перехватить попытку изменения значения контрола,чтобы сделать проверку записали/не записали?
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35229830
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может пересмотреть подход и таки отказаться от своей "буферизации". И контролы таки привязать к полям своих курсоров, а не переменных? Обрати внимание - даже не таблиц, а курсоров. Или в курсоры загнать данные труднее, чем в переменные?
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35229975
gotko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если не лень - делай пару переменных на каждый контрол-
текущее и начальное значения
при "отмена"- выставляешь начальное значение из переменной-дублера
(как ей рулить в процессе, какое ей значение присваивать при работе пользователя - определяй сам)
ИМХО - долго и нудно...
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35232385
AlexKubrak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov.А может пересмотреть подход и таки отказаться от своей "буферизации". И контролы таки привязать к полям своих курсоров, а не переменных? Обрати внимание - даже не таблиц, а курсоров. Или в курсоры загнать данные труднее, чем в переменные?

Может я чего-то не понимаю? Комбо и так используют в качестве источника курсоры полученные с MS SQL, причем разные в зависимости от например Option1.Value. Если я по Option1 клацну у меня список другой высветиться, индекс поменяется. Вы мне предлагаете создать курсор, в котором будут храниться тот самый Option1.Value и индекс COmbo ?
Я не применяю "свою" буферизацию, на основе контролов формируется запрос. Создавать курсор для каждого контрола (у меня их с десяток) только для "отката" интерфейса ну как-то странно. Здесь помогло бы событие что-то типа ComboBox1.BeforeChange().

К сожалению ничего похожего не нашел, поэтому наверно прийдется делать примерно так:
1. В нужных контролах добавить properties OldValue
2. В GotFocus() заполнять OldValue=Value, проверять изменения, предлагать "Да", "Нет", "Отмена"
3. В Interactivechange() если "Отмена" Value=OldValue и не выполнять блок по перезагрузке курсора и т.д.
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35234028
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откуда берешь первоначальное значение Value для инициализации значения Combo? ДО модификации? Разве нельзя повторно взять то же самое значение, если пользователь отказался от модификации?
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35235745
AlexKubrak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну , например, при загрузке формы начальное значение комбо "Москва".
Юзер выбирает "Киев". Исходя из этого формируется курсор,связанный с гридом и юзер в гриде просматривает и правит данные (прайс-лист). Потом, забыв сохранить то что он там на исправлял, он в комбо выбирает "Симферополь". Перед загрузкой данных для Симферополя я проверяю, если есть не сохраненные изменения - выводу диалог "Сохранить? Да, Нет, Отмена". Если Отмена естественно курсор не перезагружаю, НО В КОМБО УЖЕ ВЫБРАН "Симферополь", а в гриде отображаются данные "Киева".

Это примитивный пример, так как есть еще комбо на список типов товара, который в разных городах разный, т.е. при выборе города перезагружается еще один комбо. Там еще много чекбоксов, оптионс, около десятка контролов. Можно конечно им делать Disable пока не сохранит, но это как-то не правильно.
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35236063
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По большому счету, даже в случае привязки к данным все-равно останется только сохранение значения до модификации и сравнение со значением после. Например, в свойстве TAG объекта или, как Вы и предложили, в специально созданном свойстве OldValue (свойство TAG только символьного типа).

Так что, описанное Вами решение, по сути, единственно возможное. Привязка к данным здесь ничего не изменит.
...
Рейтинг: 0 / 0
Как вернуть предыдущее значение контрола?
    #35236249
AlexKubrak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я так и понял, спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как вернуть предыдущее значение контрола?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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