Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как запретить скроллинг по датасету [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]

Какую именно навигацию запретить? Кто навигирует?


Наверх

Титульная страница Поиск, карта сайта Написать письмо