Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Обновление данных в DBGrid   Найти похожие ветки 

 
7E81h ©   (2004-12-18 21:21) [0]

Здравствуйте, уважаемые Мастера!
Прошу помощи!

Имеется DBGrid, связанный с IBQuery.
Нужно с определенным интервалом времени обновлять данные в DBGrid"е.
Использую следующий простейший код:


procedure TForm1.Timer1Timer(Sender: TObject);
var
 // nSaved: Integer;
 Bookmark: TBookmark;
begin
 with DataMod1 do begin
   // Сохранить номер текущей записи
   Bookmark:= IBQuery1.GetBookmark;
   // либо:
   //  nSaved:= IBQuery1.FieldByName("ID_NO").AsInteger;
   try
     // Обновить данные
     IBQuery1.Close;
     IBQuery1.Open;
     // Восстановить номер текущей записи
     IBQuery1.GotoBookmark( Bookmark );
     // либо:
     //  IBQuery1.Locate( "ID_NO", nSaved, [] );
   finally
     IBQuery1.FreeBookmark( Bookmark );
   end;
 end;
end;


При этом иногда происходит мерцание DBGrid"а и в ряде
случаев его скроллинг.

Отключение DataSource на время обновления не дает результата,
так как при этом все равно происходит перерисовка DBGrid.

Установка DBGrid1.DefaultDrawing:= False не позволяет избежать
перерисовки фона, поэтому мерцание также не устраняет.

Установка DoubleBuffered:= True также не приводит к нужному результату.

Методы BeginUpdate и EndUpdate являются protected и недоступны.

Возможно ли каким-либо образом блокировать перерисовку DBGrid на
время обновления источника данных?

Можно ли избежать скроллинга DBGrid"а при восстановлении текущей записи после обновления?

Направьте, пожалуйста, на путь истинный!


 
Sergey_Masloff   (2004-12-18 21:32) [1]

Возможно ли каким-либо образом блокировать перерисовку DBGrid на
время обновления источника данных?


YourDataSet.DisableControls();
try
 переоткрываешь
finally
 YourDataSet.EnableControls();
end;


 
Fin ©   (2004-12-18 23:11) [2]

На счет того Можно ли избежать скроллинга DBGrid"а не отвечу, так как с ходу не знаю и как то не задумывался, а вот по поводу того что ты ищешь предыдущую запись при помощи Bookmark, вызывает сомнение. Дело в том что после обновления источника данных возвращаемые записи могут оказаться в другой последовательности, а предыдущий Bookmark был првязан как раз к нобору данных до обновления. Не знаю как у теба, но у меня GotoBookmark после обновления устанавливается на такой же порядковый номер записи что и до обновления, но сама запись после обновления уже переместилась в другое место.


 
7E81h ©   (2004-12-19 11:39) [3]

Спасибо большое!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.039 c
14-1104645718
Чеширский_Кот
2005-01-02 09:01
2005.01.23
Приснился странный сон в ночь с 31 декабря на 1 января...


3-1103525704
denis24
2004-12-20 09:55
2005.01.23
редактирование в гриде


1-1105439408
K@rt
2005-01-11 13:30
2005.01.23
Папка Help 2005


1-1105368908
serg128
2005-01-10 17:55
2005.01.23
Как результаты вывода команды ping перенаправить в Memo?


1-1105552721
Mr. D
2005-01-12 20:58
2005.01.23
при назначении действиия ....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский