Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];
ВнизDBGrid + скролл Найти похожие ветки
← →
RWolf © (2009-12-30 16:36) [0]Подскажите функциональный аналог компонента DBGrid, в котором при прокрутке вертикального скроллбара курсор не перемещается по записям связанного с таблицей источника данных, т. е. ведёт себя, как выделенная строка в StringGrid.
(предполагается, что результаты запроса выкачаны с сервера полностью, так что позиция вертикального скроллбара имеет смысл).
← →
Anatoly Podgoretsky © (2009-12-30 16:46) [1]> RWolf (30.12.2009 16:36:00) [0]
Что же он тогда будет показывать в этом случае, ведь в dbgrid нет данных?
← →
RWolf © (2009-12-30 16:53) [2]то же самое, что и DBGrid — набор записей из кэша связанного датасета.
← →
Медвежонок Пятачок © (2009-12-30 16:55) [3]стринггрид
← →
Сергей М. © (2009-12-30 16:56) [4]
> набор записей из кэша связанного датасета.
>
Так ведь при прокуртке кэш как правило обновляется, а значит изменяется и позиция тек.записи ..
← →
KilkennyCat © (2009-12-30 22:04) [5]да она может хоть миллион раз изменяться, ничто не мешает помнить нужную.
← →
12 © (2009-12-31 09:40) [6]там в предке можно попробовать WMVScroll подредактировать
← →
sniknik © (2009-12-31 09:47) [7]> можно попробовать WMVScroll подредактировать
много редактировать придется, и не только в WMVScroll. скорее речь должна идти не о "подредактировании", а о полном переписывании логики.
← →
12 © (2009-12-31 11:16) [8]да почему ж
если все что FDataLink связано убрать?
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;
← →
sniknik © (2009-12-31 12:45) [9]ну попробуй, и посмотри что получится.
← →
12 © (2009-12-31 12:50) [10]не, это пусть автор, меня и так устраивает :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c