
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
02.04.2008, 12:50
|
|||
|---|---|---|---|
|
|||
Как вернуть предыдущее значение контрола? |
|||
|
#18+
Есть форма с гридом, привязанным к курсору и множеством контролов (checkbox-ы, Combobox, TextBox и т.д.) не связанных с курсором (работаю с ними через Value). Юзер управляя контролами получает в курсор новые данные, которые может править. Если он, например, через комбо выберет что-то, отличное от того что было курсор перезагрузится новыми данными и то что он там наисправлял потеряется, если конечно он не нажал до этого "Сохранить". По InteractiveChange() я могу проверить - сохранил или нет и предложить "Сохранить? Да, Нет, Отмена" Внимание, вопрос! Как в случае "Отмены" вернуть состояние контрола на первоначальное? Заранее, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2008, 13:16
|
|||
|---|---|---|---|
|
|||
Как вернуть предыдущее значение контрола? |
|||
|
#18+
Для этого давно изобретена и работает буферизация. Обсуждалась 1001 раз и здесь, и на www.foxclub.ru Поиск в помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2008, 13:39
|
|||
|---|---|---|---|
|
|||
Как вернуть предыдущее значение контрола? |
|||
|
#18+
Я пользовался поиском, но обычно это вопросы о контролах связаных с таблицей и их буферизации, а то что мне надо не нашел. Может не так искал? У меня контролы не связаны ни с какой таблицей, их более 10, многие между собой связаны "логически" через Valid(). Каким образом организовать буферизацию если контролы к ни к базе ни к курсору не подвязаны. Не ужели для каждого контрола по GotFocus() сохранять Value в кучу локальных переменных? Вопрос скорее, касается порядка выполнения событий контрола, т.е. на каком этапе мне перехватить попытку изменения значения контрола,чтобы сделать проверку записали/не записали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2008, 13:55
|
|||
|---|---|---|---|
|
|||
Как вернуть предыдущее значение контрола? |
|||
|
#18+
А может пересмотреть подход и таки отказаться от своей "буферизации". И контролы таки привязать к полям своих курсоров, а не переменных? Обрати внимание - даже не таблиц, а курсоров. Или в курсоры загнать данные труднее, чем в переменные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2008, 14:33
|
|||
|---|---|---|---|
|
|||
Как вернуть предыдущее значение контрола? |
|||
|
#18+
если не лень - делай пару переменных на каждый контрол- текущее и начальное значения при "отмена"- выставляешь начальное значение из переменной-дублера (как ей рулить в процессе, какое ей значение присваивать при работе пользователя - определяй сам) ИМХО - долго и нудно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.04.2008, 12:04
|
|||
|---|---|---|---|
|
|||
Как вернуть предыдущее значение контрола? |
|||
|
#18+
Sergey Sizov.А может пересмотреть подход и таки отказаться от своей "буферизации". И контролы таки привязать к полям своих курсоров, а не переменных? Обрати внимание - даже не таблиц, а курсоров. Или в курсоры загнать данные труднее, чем в переменные? Может я чего-то не понимаю? Комбо и так используют в качестве источника курсоры полученные с MS SQL, причем разные в зависимости от например Option1.Value. Если я по Option1 клацну у меня список другой высветиться, индекс поменяется. Вы мне предлагаете создать курсор, в котором будут храниться тот самый Option1.Value и индекс COmbo ? Я не применяю "свою" буферизацию, на основе контролов формируется запрос. Создавать курсор для каждого контрола (у меня их с десяток) только для "отката" интерфейса ну как-то странно. Здесь помогло бы событие что-то типа ComboBox1.BeforeChange(). К сожалению ничего похожего не нашел, поэтому наверно прийдется делать примерно так: 1. В нужных контролах добавить properties OldValue 2. В GotFocus() заполнять OldValue=Value, проверять изменения, предлагать "Да", "Нет", "Отмена" 3. В Interactivechange() если "Отмена" Value=OldValue и не выполнять блок по перезагрузке курсора и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.04.2008, 18:40
|
|||
|---|---|---|---|
Как вернуть предыдущее значение контрола? |
|||
|
#18+
Откуда берешь первоначальное значение Value для инициализации значения Combo? ДО модификации? Разве нельзя повторно взять то же самое значение, если пользователь отказался от модификации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.04.2008, 13:37
|
|||
|---|---|---|---|
|
|||
Как вернуть предыдущее значение контрола? |
|||
|
#18+
Ну , например, при загрузке формы начальное значение комбо "Москва". Юзер выбирает "Киев". Исходя из этого формируется курсор,связанный с гридом и юзер в гриде просматривает и правит данные (прайс-лист). Потом, забыв сохранить то что он там на исправлял, он в комбо выбирает "Симферополь". Перед загрузкой данных для Симферополя я проверяю, если есть не сохраненные изменения - выводу диалог "Сохранить? Да, Нет, Отмена". Если Отмена естественно курсор не перезагружаю, НО В КОМБО УЖЕ ВЫБРАН "Симферополь", а в гриде отображаются данные "Киева". Это примитивный пример, так как есть еще комбо на список типов товара, который в разных городах разный, т.е. при выборе города перезагружается еще один комбо. Там еще много чекбоксов, оптионс, около десятка контролов. Можно конечно им делать Disable пока не сохранит, но это как-то не правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.04.2008, 15:06
|
|||
|---|---|---|---|
Как вернуть предыдущее значение контрола? |
|||
|
#18+
По большому счету, даже в случае привязки к данным все-равно останется только сохранение значения до модификации и сравнение со значением после. Например, в свойстве TAG объекта или, как Вы и предложили, в специально созданном свойстве OldValue (свойство TAG только символьного типа). Так что, описанное Вами решение, по сути, единственно возможное. Привязка к данным здесь ничего не изменит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&tablet=1&tid=1587933]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 325ms |

| 0 / 0 |
