Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Как в FibDataSet при работающем OnFilterRecord обратиться ко всем списку записей  [new]
alexey.barkalov
Member

Откуда: Россия
Сообщений: 372
Здравствуйте.
В FIBDataSet у меня есть обработчик OnFilterRecord, который позволяет показать пользователю,
отфильтрованные записи по определенному алгоритму. Но стоит задача, для определенных
действий программно "пробежаться" по всем записям т.е. как если бы фильтр был отключен.
Скажите, пожалуйста, возможно ли такое?

Если делать так
FR := MyFIbDS.OnFilterRecord;
try
  MyFIbDS.OnFilterRecord := nil
  MyFIbDS.First;
  while not MyFIbDS.Eof do 
  begin
   { что-то делаем }
   ...
  end;
finally
  MyFIbDS.OnFilterRecord := FR
end;


в принципе работает и даже не моргает особо, но вызывается OutMemory если это сделать в OnSetText одного из полей, а это мне иногда нужно.
2 авг 12, 11:16    [12950851]     Ответить | Цитировать Сообщить модератору
 Re: Как в FibDataSet при работающем OnFilterRecord обратиться ко всем списку записей  [new]
Марат Сафин
Member

Откуда:
Сообщений: 618
alexey.barkalov
в принципе работает и даже не моргает особо, но вызывается OutMemory если это сделать в OnSetText одного из полей, а это мне иногда нужно.

Что бы не моргало используй DisableControls, EnableControls что бы не было OutMemory заведи булевскую переменную в классе (например Flag), что то типа:
  if not Flag then
  begin
    Flag:=True;
    try
// Тут чего нибуть делаем
    finally
      Flag:=False;
    end;
  end;
2 авг 12, 11:36    [12951031]     Ответить | Цитировать Сообщить модератору
 Re: Как в FibDataSet при работающем OnFilterRecord обратиться ко всем списку записей  [new]
alexey.barkalov
Member

Откуда: Россия
Сообщений: 372
Марат Сафин
Что бы не моргало используй DisableControls, EnableControls

Уже стоят

Марат Сафин
Что бы не было OutMemory заведи булевскую переменную в классе (например Flag), что то типа:
  if not Flag then
  begin
    Flag:=True;
    try
// Тут чего нибуть делаем
    finally
      Flag:=False;
    end;
  end;



Не совсем понятно куда необходимо вставить переменную "Flag"? В OnSetText?
2 авг 12, 11:41    [12951081]     Ответить | Цитировать Сообщить модератору
 Re: Как в FibDataSet при работающем OnFilterRecord обратиться ко всем списку записей  [new]
Марат Сафин
Member

Откуда:
Сообщений: 618
alexey.barkalov
Не совсем понятно куда необходимо вставить переменную "Flag"? В OnSetText?

Это должна быть глобальная переменная по отношению к OnSetText.
2 авг 12, 11:50    [12951161]     Ответить | Цитировать Сообщить модератору
 Re: Как в FibDataSet при работающем OnFilterRecord обратиться ко всем списку записей  [new]
alexey.barkalov
Member

Откуда: Россия
Сообщений: 372
Марат Сафин
alexey.barkalov
Не совсем понятно куда необходимо вставить переменную "Flag"? В OnSetText?

Это должна быть глобальная переменная по отношению к OnSetText.


Не решает проблему, кстати можно и без глоб. переменной обойтись:
procedure MyClass.OnSetText(Sender: TField);
var
  ST: TFieldSetTextEvent;
begin
  ST := Sender.DataSet.OnSetText;
  Sender.DataSet.OnSetText := nil;
  try
     ...
  finally
    Sender.DataSet.OnSetText := ST;  
  end; 
end;


Но все равно это проблему не решает!
2 авг 12, 11:56    [12951226]     Ответить | Цитировать Сообщить модератору
 Re: Как в FibDataSet при работающем OnFilterRecord обратиться ко всем списку записей  [new]
Anatoly Podgoretsky
Member

Откуда:
Сообщений: 62926
Чего думать, на момент пробега фильтр отключить
2 авг 12, 12:17    [12951452]     Ответить | Цитировать Сообщить модератору
 Re: Как в FibDataSet при работающем OnFilterRecord обратиться ко всем списку записей  [new]
alexey.barkalov
Member

Откуда: Россия
Сообщений: 372
Anatoly Podgoretsky
Чего думать, на момент пробега фильтр отключить

Ща не много по шаманил с кодом - вроде все ок
2 авг 12, 12:30    [12951585]     Ответить | Цитировать Сообщить модератору
 Re: Как в FibDataSet при работающем OnFilterRecord обратиться ко всем списку записей  [new]
alexey.barkalov
Member

Откуда: Россия
Сообщений: 372
alexey.barkalov
Anatoly Podgoretsky
Чего думать, на момент пробега фильтр отключить

Ща не много по шаманил с кодом - вроде все ок

но все равно не понятно почему в fib'ах нет возможности не выключая фильтр обращаться к спрятанным записям - ведь они же физически не удаляются из DataSet'a
2 авг 12, 12:32    [12951601]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить