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

Вниз

Получить позицию первой выводимой записи в DBGrid-е   Найти похожие ветки 

 
diwww   (2005-10-27 15:10) [0]

В DBGrid выводятся данные из Table
Пользователь прокручивает данные в DBGrid-е
Потом периодически пользователь выполняет действие, приводящее к Table.Refresh
При этом данные в DBGrid-е отображаются с самого начала
Надо чтобы MSTable3.Refresh в DBGrid записи отображались с той, с которой и перед Refresh-ем
Как это сделать?


 
Ega23 ©   (2005-10-27 15:16) [1]

Сохранять значение ключевого поля в локальной переменной, потом

dataSet.DisableControls;
Refresh;
DataSet.Locate(Ключевое_поле, сохранённое_значение, [])
dataSet.EnableControls;


 
diwww   (2005-10-27 15:19) [2]

> Ega23 ©   (27.10.05 15:16) [1]
А как получить значение ключевого поля первой выводимой записи в DBGrid-е?


 
diwww   (2005-10-27 15:20) [3]

...
Независимо от того установлен на ней фокус или нет


 
Ega23 ©   (2005-10-27 15:27) [4]


> Независимо от того установлен на ней фокус или нет


Ну-у-у-у... Можно DBGid.DataSource.DataSet.First сделать. Ну курсор тогда передвинется.
Можно ещё круче изгольнуться, TDataLink создать.
Тока оно тебе надо?


 
Desdechado ©   (2005-10-27 15:32) [5]

первой видимой в данный момент?
посчитать от текущей выделенной :)
Имхо, проще запоминать текущую


 
diwww   (2005-10-27 15:35) [6]

> Ega23 ©   (27.10.05 15:27) [4]
Попробовал...
DBGid.DataSource.DataSet.First устанавливает фокус на вообще первой записи в DBGrid-е, а не на первой видимой записи :(
>Можно ещё круче изгольнуться, TDataLink создать.
поясните немного, пожалуйста. Не пользовался раньше TDataLink
>Тока оно тебе надо?
к сожалению надо :(
чтобы было красиво

>Desdechado ©   (27.10.05 15:32) [5]
>первой видимой в данный момент?
да


 
isasa ©   (2005-10-27 15:37) [7]

Уже отменили!
property Bookmark: TBookmarkStr;  //Specifies the current bookmark in the dataset.


 
Desdechado ©   (2005-10-27 15:48) [8]

2 isasa
Bookmark НЕЛЬЗЯ использовать в переоткрытом датасете, т.к. этот адрес действителен только в пределах конкретного открытия данных


 
diwww   (2005-10-27 15:52) [9]

> isasa ©   (27.10.05 15:37) [7]

Попробовал... не совсем то :((

SavePlace := Table.GetBookmark;
Table.Refresh;
Table.GotoBookmark(SavePlace);
Table.FreeBookmark(SavePlace);

приводит к тому что по центру DBGrid-а выравнивается запись, которая перед Refresh-ем была в фокусе
Т.е. привязка к фокусу, что не нужно
Нужно определить первую ОТОБРАЖАЕМУЮ запись в DBGrid


 
isasa ©   (2005-10-27 16:07) [10]

Bookmark НЕЛЬЗЯ использовать в переоткрытом датасете

Конкретного запрета или ограничения на то, что она действительна до Refresh - нет.


 
msguns ©   (2005-10-27 16:13) [11]

>isasa ©   (27.10.05 16:07) [10]
>Конкретного запрета или ограничения на то, что она действительна до Refresh - нет.

Конкретного запрета ходить на голове нет, однако ж не ходит никто ;)


 
diwww   (2005-10-27 17:05) [12]

Как определить первую ОТОБРАЖАЕМУЮ запись в DBGrid?

up


 
Johnmen ©   (2005-10-27 17:18) [13]

>Как определить первую ОТОБРАЖАЕМУЮ запись в DBGrid?

Ну определишь, а что это тебе даст?


 
Desdechado ©   (2005-10-27 17:22) [14]

1. у тебя есть высота грида
2. у тебя есть высота строки
3. у тебя есть текущая строка и ее координаты в гриде
4. применяем простейшие арифметические операции


 
ЮЮ ©   (2005-10-28 03:25) [15]

Посмотри как грид рисует все строки, начиная с "первой видимой":

 OldActive := FDataLink.ActiveRecord;
 try
   DataLink.ActiveRecord := ARow;
   if Assigned(DrawColumn.Field) then
         Value := DrawColumn.Field.DisplayText;
      т.е здесь фактически меняется текущая запись НД
   ...
 finally
   DataLink.ActiveRecord := OldActive;
 end;

Как достучаться до protected св-ва TDBGrid.DataLink, надеюсь знаешь.

А вот как ты собираешься позиционировать НД так, чтобы первая запись в гриде опять стала первой, а не произвольной, как в случае с текущей записью, это ещё вопрос!!!



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

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

Наверх




Память: 0.5 MB
Время: 0.031 c
14-1132410065
quickblack
2005-11-19 17:21
2005.12.11
Командная строка DOS


14-1132641929
Layner
2005-11-22 09:45
2005.12.11
Oracle бесплатно


2-1132654068
DSKalugin
2005-11-22 13:07
2005.12.11
правильная работа с цветом


4-1128974346
Silver...
2005-10-10 23:59
2005.12.11
"RegisterHotKey" - оставить и активному приложению...


4-1128934874
Vano85
2005-10-10 13:01
2005.12.11
Мониторинг за файлами