Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TopRow в DBGrid


Страницы:   1 2

PZ ©   (2006-11-08 18:44:00) 

Здравствуйте.
У меня простейшая база данных из одной таблицы, объемом порядка 2500 записей. Набор данных создается компонентом TClientDataSet и отображается компонентом DBRxGrid.
Мне хотелось бы, чтобы некая запись моей базы по заданному условию отображалась в верхней строчке DBRxGrid (какбы аналог свойства StringGrid.TopRow). Прошу дать практический совет, как реализовать эту задачу, желательно с примером. (Delphi 7)
С уважением, PZ


ЮЮ   (2006-11-09 10:28:00) [21]


> Как бы теперь практически реализовать Ваше предложение?


По тексту в [11] код. С проблемами вернуться сюда.

Кстати, текущая запись НД отличается от той, что должна быть первой в гриде?


PZ   (2006-11-09 10:24:00) [22]

> [11] ЮЮ ©   (09.11.06 03:36)
> Насколько я понял, человек просто хочет спозиционировать датасет в гриде так, чтобы     определенная запись оказалось первой в этом гриде.

Вы действительно правильно поняли меня. Как бы теперь практически реализовать Ваше предложение? Может быть покажите на примере?
С уважением PZ


ЮЮ   (2006-11-09 03:36:00) [23]

Насколько я понял, человек просто хочет спозиционировать датасет в гриде так, чтобы определенная запись оказалось первой в этом гриде.

А текущая какая? В DBgrid-e её присутствие на экране обязательно.
Поэтому, сделав её текущей, она обязательно попадет в Грид. Но, скорей всего, в его середину.

Теперь, обратившись к DBGrid.DataLink (protected), можно узнать на какой строке находится эта запись, и какая запись последняя. Теперь надо сделать текущнй последнюю, сделать MoveBy, вызвав скроллинг НД в гриде, и опять сделать текущей нашу запись, которая будет к этому времени верхней в гриде.


V-A-V   (2006-11-08 22:32:00) [24]

> Ввести поле "ONTOP" boolean, присваивать нужной записи значение True и новый select, но это извращение.

ну почему-же если нельзя и очень хочется, то можно...

создаем поле "isOnTop" и для нухной записи в нухный момент присваеваем ему True, а остальным записям False
> Нет, немного не так. У меня база отсортирована по алфавиту. Нарушать порядок не желательно.
ну и естественно должен быть соответствующий индекс типа "isOnTop;Name"


evvcom   (2006-11-08 19:46:00) [25]

> [8] PZ   (08.11.06 19:41)
> Чувствую, что не совсем то, что мне надо

Так ты объяснить толком не можешь, чего же тебе надо!


PZ   (2006-11-08 19:41:00) [26]

Чувствую, что не совсем то, что мне надо. Видимо простого решения не существует. Тем не менее спасибо всем за участие.


evvcom   (2006-11-08 19:39:00) [27]

> [6] rar ©   (08.11.06 19:37)

зачем 2 запроса, если можно одним?


rar   (2006-11-08 19:37:00) [28]

может создать два запроса и объединить их по Union


evvcom   (2006-11-08 19:31:00) [29]

select
 *,
 case when <моя строка> then 0 else 1 end as ord
from ...
order by ord, fam


PZ   (2006-11-08 19:22:00) [30]

Нет, немного не так. У меня база отсортирована по алфавиту. Нарушать порядок не желательно. Надо только чтобы заданная строка оказалась в верхней строке. А те, что ниже - остались внизу, те, что выше - остались вверху. После чего мышкой можно было бы сдвигать все строки вверх-вниз без нарушения порядка. То есть, именно, как в SringGrid делается.


Desdechado   (2006-11-08 19:05:00) [31]

отсортируй по этому условию


PZ   (2006-11-08 19:01:00) [32]

А как без извращения? Возможно ли сделать?


Jeer   (2006-11-08 18:48:00) [33]

Ввести поле "ONTOP" boolean, присваивать нужной записи значение True и новый select, но это извращение.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо