![]() |
|
![]() ![]() ![]() |
|
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
Добрый день.
Редактирую таблицу через грид. При создании новой строки происходит некое автозаполнение полей через датасет. И пользователь, может быть, ничего уже менять не будет. Вот тут то и загвоздка. Если в гриде ни одно поле не переходило в режим редактирования, то он, при переходе на новую строку, пошлет датасету Cancel. А мне надо, что бы при переходе на другую строку делался Post. Я мог бы и сам делать Post после автозаполнения - но тогда не отменить создание строки по эскейпу. Склоняюсь к программному редактированию грида (как то так). Но как? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
![]() Добавлено через 28 секунд а свойства грида изучить - это так сложно? Добавлено через 47 секунд CancelOnExit := False |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
||||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Вообще, при переходе на другую строку по умолчанию выполняется POST
|
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
dgCancelOnExit When the user exits the grid from an inserted record to which the user made no modifications, the inserted record is not posted to the dataset. This prevents the inadvertent posting of empty records. Я конечно же пробовал уже эту опцию. Просто ты так безапелляционно заявил про то, что надо учить свойства грида, что я не удержался и съязвил немного. Вопрос открыт! Это сообщение отредактировал(а) superVad - 12.6.2012, 21:08 |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
||||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
Мне надо заставить грид "подумать", что в новой строчке были изменения внесенные через грид. Тогда он при переходе на следующую строку сделает Post а не Cancel. dgCancelOnExit работает только для выхода из грида (всего грида, на другой контрол какой то), на переход по строчкам он не влияет. Я проверял, и так написано в справке (я выше привел кусочек оттуда). |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Т.е. так?
1. Пользователь нажал Insert, добавилась новая строка. 2. Пользователь ничего не меняет в ячейках и нажимает клавишу вверх. 3. Т.к. ничего не менялось в новой записи, то нужно выполнять Cancel. 1. Пользователь нажал Insert, добавилась новая строка. 2. Пользователь что-то меняет в ячейках и нажимает клавишу вверх. 3. Т.к. в новой записи что-то поменялось, то нужно выполнять Post. Добавлено через 2 минуты и 15 секунд Забей. Дай пользователю свободу. Пусть сам думает, решает, учится на ошибках, что если перейти на другую строку, то в любом случае даже пустая запись сохраниться. Если он передумал, то пусть нажмет Escape и будет ему счастье. Добавлено через 3 минуты и 36 секунд Вариант второй. Есть 1 или несколько полей, обязательных для заполнения. Анализируй и выдавай сообщение или отменяй Post в событии BeforPost. Добавлено через 5 минут и 39 секунд Возможно в используемом гриде или датасете уже реализовано что-то похожее. Просто датасет сам не добавит "пустую" запись. |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 3 Всего: 15 |
Akella, строка создается уже не пустая. Она заполняется на основании или справочника или ранее введенных записей. И есть вероятность, что не надо в ней ничего менять, а сохранить не возможно, т.к. грид думает, что изменений не было и Пост не происходит.
Сейчас делаю Пост сразу после инсетра и автозаполнения, но это не очень удобно - т.к. уже по ескейпу не отменишь создание этой строки. Я уже пробовал делать Пост в BeforeScroll - но он тогда не переходит при первом нажатии и ескейп не срабатывает. Собственно все мои проблемы находятся вот тут:
Вот думаю - с помощью Шаманского метода Geo - вывести FDatalink из private и проставить ему FDatalink.Dataset.Modified или FDatalink.FModified... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |