Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.06;
Скачать: CL | DM;

Вниз

Такая вот загадка про DBGRID   Найти похожие ветки 

 
MonsterKot   (2003-09-16 07:47) [0]

Проблемя в следующем:
Данные у клиента отображаются в гриде, клиенту необходимо освежить данные (может быть по разным причинам), для этого приходится закрывать и затем снова открывать запрос. Что бы клиент не потерял текущую запись (с которой он возможно работал),
позиционируем на нее курсор используя метод Locate. Все вроде нормально, но хотелось бы сделать что бы в гриде курсор не перепрыгивал на последнюю запись, а оставался на месте.

Может кто подскажет как это сделать?


 
Alexandr   (2003-09-16 08:57) [1]

как это на последнюю запись?
Тыж locate делаешь...


 
Johnmen   (2003-09-16 09:19) [2]

DisableControls
EnableControls


 
roottim   (2003-09-16 10:22) [3]

procedure RefreshDataSet(ADataSet: TDataSet);
var bm: TBookMarkStr;
begin
if ADataSet.Active then
begin
bm := ADataSet.BookMark;
ADataSet.Close;
ADataSet.Open;
try
ADataSet.BookMark := bm;
except
ShowMessage("А НЕТУ ЕЁ");
end;
end;
end;


пример: RefreshDataSet(Grid1.DataSouerce.DataSet);


 
Johnmen   (2003-09-16 10:29) [4]

>roottim

Никаких гарантий, что встанет на ту же запись.


 
MonsterKot   (2003-09-16 10:33) [5]

Я имею в виду если у клиента запись в гриде была скажем пятая (в самом датасете это может быть 1000 запись), то после рестарта запроса и locate она становится последней т.е. курсор прыгает по гриду на последнюю запись, что сбивает с толку пользователя.
A DisableControls и EnableControls это я самосабой делаю.

Это проявляется если записей в запросе больше, чем может отобразиться в гриде.

Я пробовал это вылечить, но у грида отсутствует свойство - колличество отображаемых строк. Его можно было бы получить из TCustomDBGrid.DataLink.BufferCount но это свойство Protected.
Посмотреть его можно только в отладчике!


 
MonsterKot   (2003-09-16 10:36) [6]


> roottim

Через BookMark нельзя однозначно, если запрос закрывается и открывантся вновь! Это и в хелпе написано!


 
don-do   (2003-09-16 10:55) [7]

Объяви свой тип
Type
TMyGrid = class(TDBGrid);
в модуле где процедура.
И теперь ты имеешь доступ ко всем защищенным методам, пример:
n := TMyGrid(DBGrid1).Row;


 
Johnmen   (2003-09-16 11:20) [8]

Теперь понятно...
Такой вопрос уже когда-то был. Ответ с примером могу выслать.


 
GWW   (2003-09-16 11:26) [9]

Я делаю сдедующим образом:

procedure RefreshDataSet
var
nId: integer;
begin
nId:=ADOQuery.FieldByName("id").Value;
ADOQuery.Close;
ADOQuery.Open;
if not ADOQuery.Locate("id",nId,[]) then
ADOQuery.First;
end;

где id - уникальное поле.


 
MonsterKot   (2003-09-17 04:36) [10]


> Johnmen © (16.09.03 11:20) [8]
> Теперь понятно...
> Такой вопрос уже когда-то был. Ответ с примером могу выслать.


Буду рад примеру, можно на мыло:super-kot@roskhb.ru
Спасибо!



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

Текущий архив: 2003.10.06;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.007 c
1-18384
DreamDesire
2003-09-22 17:16
2003.10.06
Область прокрутки для компонентов


3-18267
AlexWeb
2003-09-15 16:50
2003.10.06
Почему у меня при переоткрытии не обновляется IBDataSet?


14-18576
Анатолий
2003-09-18 10:52
2003.10.06
CanClose


3-18279
Denizzz
2003-09-17 12:04
2003.10.06
Авторасчет


6-18516
Maxim Pshevlotsky
2003-08-11 10:58
2003.10.06
Как выполнить поиск по FTP серверу?





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