Главная страница
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.026 c
4-1129004207
Zert
2005-10-11 08:16
2005.12.11
например в чужое окно можно записать значение, а как прочесть из


2-1132496063
Avdoshin
2005-11-20 17:14
2005.12.11
Иконка


2-1133005956
kami
2005-11-26 14:52
2005.12.11
Получение иконок типов файлов - как сделать быстрее?


14-1132528199
vasek
2005-11-21 02:09
2005.12.11
где взять доки по обьектам ядра (API), синхронизация


2-1132598088
Tapok
2005-11-21 21:34
2005.12.11
Как узнать размер класера?