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

Вниз

DBGrid   Найти похожие ветки 

 
som   (2002-10-21 12:07) [0]

Имеется DBGrid1 связаный с IBQuery1. Допустим я изменил данные в строке, расположенной в середине видимой области DBGrid-а.
После я запоминаю номер этой строки no:= Form1.IBQuery1.RecNo;
делаю :
Form1.IBQuery1.Active:=false;
Form1.IBQuery1.Active:=true;
Form1.IBQuery1.RecNo:=no;
Но при этом отредактированная строка перемещается и становиться самой верхней в видимой области DBGrid-а. Как более умно :)) сделать подобную процедуру перечитки данных, чтобы избежать вышеупомянутого скачка редактируемой строки ????


 
ЮЮ   (2002-10-21 12:18) [1]

1) Зачем переоткрывать, если запись изменил ты?
2) Запомнить 1-ю, посдеднюю и текущую запись. В этой же последовательности пытыться позиционироваться. В этом случае, полагаю, DBGrid.DataLink будет такой же, как и перед закрытием.


 
som   (2002-10-21 15:39) [2]

1) Затем переоткрывать, что это клиент к базе и находится он на многих машинах...
2) Нельзя ли по подробнее изложить фразу :"В этой же последовательности пытыться позиционироваться", это как раз и будет ответ на мой вопрос.....


 
Nikolay M.   (2002-10-21 17:04) [3]

1) А может ты редактируешь поле, которое указано в ORDER BY? Или сортировка по времени последнего редактирования записи, если есть такое поле? Тогда после переоткрытия НД строка, которая раньше была "текущей" может оказаться где угодно.

2) А Bookmark-и в IBQuery существуют? Сам не знаю, не работал...


 
ЮЮ   (2002-10-22 03:53) [4]

>Нельзя ли по подробнее изложить фразу :"В этой же последовательности пытыться позиционироваться", это как раз и будет ответ на мой вопрос.....

DBGrid отображает несколько строк НД, к которым имеет доступ через DataLink, который содержит все строки от первой, отображаемой в гриде, до последней, отображаемой в нём. Если посмотреть текст Draw DBGrida, можно увидеть, как он получает доступ к видимым в гриде записям.

Теперь, если запомнить ключевые поля первой и последней видимых в гриде записей и после переоткрытия запроса сделать Locate на первую, а затем на последнюю, то рамка DataLink должна совпасть с той, что была до обновления запроса.


 
som   (2002-10-23 14:05) [5]

А какая процедура прорисовки DBGrida, как она называется ?


 
ЮЮ   (2002-10-24 04:31) [6]

TCustomDBGrid.DrawCell (модуль DBGrids)
TRxDBGrid.DrawCell (модуль RXDBCtrl)
TCustomDBGridEh.DrawCell (модуль DBGridEh)


 
som   (2002-10-24 11:27) [7]

так DrawCell прорисовывает только одну ячейку грида, как там можно отследить первую видимую строку и последнюю ?????


 
ЮЮ   (2002-10-24 11:51) [8]

if ARow >= 0 then begin
OldActive := FDataLink.ActiveRecord;
try
FDatalink.ActiveRecord := ARow;
....
finally
FDatalink.ActiveRecord := OldActive;
end;
end;

АRow, как и FDatalink.ActiveRecord, в DBGrid-е принимает значение от 0 до кол-во видимых строк.

P.S. Datalink в стандартном DBGride - protected, а в TRxDBGrid и TCustomDBGridEh - public



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

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

Наверх





Память: 0.46 MB
Время: 0.009 c
4-46211
Manulo
2002-09-29 15:56
2002.11.14
MessageBeep


1-45859
Ali2002
2002-11-05 13:17
2002.11.14
Фамилии из именительного в дательный падеж


1-45944
Lizard
2002-11-04 09:56
2002.11.14
Как запустить ДОСовскую программу в Виндах в фоновом режиме ?


1-45875
Strumpf
2002-11-04 22:05
2002.11.14
Эмуляция фокуса на внутренней форме


1-45889
AndreiR
2002-11-05 19:04
2002.11.14
Ну почему он так себя ведет?!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский