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

Вниз

Получить позицию первой выводимой записи в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.04 c
9-1121778842
-virus-
2005-07-19 17:14
2005.12.11
Как делать анимацию (2D)?


3-1130138638
syte_ser78
2005-10-24 11:23
2005.12.11
украинская локализация


2-1132914567
serko
2005-11-25 13:29
2005.12.11
Шифровка!


1-1132075178
Кирилл_
2005-11-15 20:19
2005.12.11
Вставка в ListBox


1-1131782900
mfender
2005-11-12 11:08
2005.12.11
TDateTime и зимнее/летнее время и пересчёт из/в UNUX Timestamp





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