Текущий архив: 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.48 MB
Время: 0.039 c