![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проклятый DBGrid [D7, XP]
WhiteCat © (2006-07-21 23:45:00)Здравствуйте! Подскажите, пожалуйста, могу я сделать скролирование в DBGrid как в Excel? Т.е. чтоб фокус с выбранной строки не соскавивал при прокрутке сетки.
WhiteCat (2006-07-24 15:46:00) [1]to KilkennyCat
Так что Кот из киллкенни, привет тебе от белого брата. Ничего не поможет, даже наследование с полиморфизмом.
Всем спасибо.
Плохиш (2006-07-24 12:52:00) [2]
> WhiteCat (24.07.06 12:49) [11]
> to Desdechado
> т.е. сделать скролинг, подобный Excel с помощью DBGrid
> невозможно?
DBGrid не предназначен для этого, он отображает только часть данных, которые помещаются на экран, о других данных из привязанного источника DBGrid ничего не знает.
WhiteCat (2006-07-24 12:49:00) [3]to Desdechado
т.е. сделать скролинг, подобный Excel с помощью DBGrid невозможно?
Desdechado (2006-07-24 10:38:00) [4]Не может быть выбранным то, чего не видно. А при скроллинге до последней строки текущая может уйти за пределы видимости.
WhiteCat (2006-07-23 22:19:00) [5]to Gydvin
Так что идти за святой водой?
или все же
Как прокрутить сетку оставив фокус на выбранной строке?
Уточняю: Подскажте команду которая покажет мне последнюю линию в сетке( при большом количестве строк), а выбранной останется первая(к примеру)
WhiteCat (2006-07-22 00:17:00) [6]ХА! Посмотрел внимательнее! И что здесь можно переделать?
Как прокрутить сетку оставив фокус на выбранной строке?
Уточняю: Подскажте команду которая покажет мне последнюю линию в сетке, а выбранной останется первая(к примеру)
WhiteCat (2006-07-22 00:16:00) [7]ХА! Посмотрел внимательнее! И что здесь можно переделать?
Как прокрутить сетку оставив фокус на выбранной строке?
Уточняю: Подскажте команду которая покажет мне последнюю линию в сетке, а выбранной останется первая(к примеру)
KilkennyCat (2006-07-22 00:15:00) [8]Возможно исправить генофонд. Но это чревато многим, в том числе забитием меня ногами остальными форумчанами :)
Но а чего там писать-то... наследование, инкапсуляция и полиморфизм облегчают жизнь...
WhiteCat (2006-07-22 00:12:00) [9]To KilkennyCat
Спасибо, брат!
Правда, получается нужен свой компонент, который еще и регить в системе нуна. Или возможны варианты?
KilkennyCat (2006-07-22 00:06:00) [10]
procedure TCustomDBGrid.WMVScroll(var Message: TWMVScroll);
var
SI: TScrollInfo;
begin
if not AcquireFocus then Exit;
if FDatalink.Active then
with Message, FDataLink.DataSet do
case ScrollCode of
SB_LINEUP: FDataLink.MoveBy(-FDatalink.ActiveRecord - 1);
SB_LINEDOWN: FDataLink.MoveBy(FDatalink.RecordCount - FDatalink.ActiveRecord);
SB_PAGEUP: FDataLink.MoveBy(-VisibleRowCount);
SB_PAGEDOWN: FDataLink.MoveBy(VisibleRowCount);
SB_THUMBPOSITION:
begin
if IsSequenced then
begin
SI.cbSize := sizeof(SI);
SI.fMask := SIF_ALL;
GetScrollInfo(Self.Handle, SB_VERT, SI);
if SI.nTrackPos <= 1 then First
else if SI.nTrackPos >= RecordCount then Last
else RecNo := SI.nTrackPos;
end
else
case Pos of
0: First;
1: FDataLink.MoveBy(-VisibleRowCount);
2: Exit;
3: FDataLink.MoveBy(VisibleRowCount);
4: Last;
end;
end;
SB_BOTTOM: Last;
SB_TOP: First;
end;
end;
переделать.
Gydvin (2006-07-22 00:01:00) [11]
> Проклятый DBGrid
Может побрызгать святой водой? :)))
WhiteCat (2006-07-21 23:55:00) [12]Ну в принципе я и пользуюсь сторонним компонетом - JVCL. Какие у меня есть возможности реализовать задуманное?
XeON (2006-07-21 23:52:00) [13]Попробуй взять сторонние компоненты DBGrid. Будет тебе и фокус не соскакивающий и всё что угодно. Они намного практичнее.