![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как запретить скроллинг по датасету [D7, Firebird]
koks © (2006-02-27 09:45:00)Уважаемые мастера!
Мне нужно запретить навигацию по TDataset (при выполнении опред. условий). Подскажите как это сделать. Понимаю что нужно обрабатывать BeforeScroll - но как в этом обработчике "прервать скролл" не понимаю...
Заранее спасибо.
koks (2006-02-27 12:36:00) [1]Спасибо.
Johnmen (2006-02-27 11:29:00) [2]>koks (27.02.06 10:55) [10]
Кстати, не следует забывать, что перед скроллом будет неявно вызван Post, если требуется.
Desdechado (2006-02-27 11:11:00) [3]при работе с БД модальность, имхо, единственный простой вариант сохранить целостность данных, иначе между формами возникают проблемы синхронизации данных (хорошо, еслитолько просмотровых, а если еще и изменяемых в разных формах, то это вообще завал)
Mikhail V (2006-02-27 11:05:00) [4]
> Модальную не хочу по проч. причинам
Позволю себе порекомендовать пересмотреть архитектуру приложения
Vlad (2006-02-27 10:59:00) [5]
> koks (27.02.06 10:55) [10]
а [8] чем-то не подходит?
koks (2006-02-27 10:55:00) [6]Итак - имеем грид. Грид связан с Датасорс-ом. Датасорс связан с TpFIBDataset.
По гриду можно перемещаться вверх-вниз используя DBNavigator (конктретные кнопки следующая-предыдущая-на первый- на последний). Кроме того, можно перемещаться клашишами "вверх" и "вниз".
Редактировать запись низя. НО! Находясь на записи можно открыть форму, которая позволит эту запись редактировать. Эта новая форма - не модальная. (Модальную не хочу по проч. причинам). Мне нужно запретить перемещения по первоначальному датасету если открыта форма, радактирующая конкретную запись. (Это и есть условие запрещения навигации).
Т.е.
procedure TpFIBDataSet.BeforeScroll(Sender: TDataset);
begin
if assigned(fmMyRecord) then
begin
MessageDlg('Треба закрыть форму!!!');
ОтменитьСкроллинг <<----
end
end
Так вот - вопрос в том как ОТМЕНИТЬ СКРОЛЛИНГ.
Johnmen (2006-02-27 10:47:00) [7]>Нужно запретить Prev/Next/First/Last в гриде в случае если выполняются определенные условия.
>FibPlusDataSet.Next;
>FibPlusDataSet.First;
>FibPlusDataSet.Last;
>FibPlusDataSet.Prev;
if not <я запретил> then FibPlusDataSet.Next
Sergey13 (2006-02-27 10:44:00) [8]2[4] koks (27.02.06 10:01)
В BeforeScroll
if условие then abort;
Ega23 (2006-02-27 10:36:00) [9]
> DisableControls "временно рвет связь". Мне нужно чтобы связь
> была, но чтобы датасет не давал перемещаться вперед-назад.
>
Не рвёт он связь. Просто сообщения от TDataSet не передаются TDataSource'ам.
По-моему у тебя причинно-следственная связь нарушена. Попробуй ещё раз подробно описать то, что тебе нужно.
koks (2006-02-27 10:22:00) [10]FibPlusDataSet.Next;
FibPlusDataSet.First;
FibPlusDataSet.Last;
FibPlusDataSet.Prev;
Johnmen (2006-02-27 10:19:00) [11]>Нужно запретить Prev/Next/First/Last в гриде
Это кнопки клавы и мыши? Или что?
koks (2006-02-27 10:01:00) [12]2 Lexer
DisableControls "временно рвет связь". Мне нужно чтобы связь была, но чтобы датасет не давал перемещаться вперед-назад.
koks (2006-02-27 09:52:00) [13]Есть грид который связан с датасетом. Нужно запретить Prev/Next/First/Last в гриде в случае если выполняются определенные условия.
Lexer (2006-02-27 09:52:00) [14]Может вот это надо?
DataSet.DisableControls;
Johnmen (2006-02-27 09:48:00) [15]Какую именно навигацию запретить? Кто навигирует?