Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.07;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
15-1261344620
Юрий
2009-12-21 00:30
2010.03.07
С днем рождения ! 21 декабря 2009 понедельник


2-1262771765
webpauk
2010-01-06 12:56
2010.03.07
Буфер обмена


2-1262678486
Eh
2010-01-05 11:01
2010.03.07
Меню как в Access


2-1262514706
ЭлЭрДжи
2010-01-03 13:31
2010.03.07
Вопрос по типизированным файлам.


15-1261282914
Nic
2009-12-20 07:21
2010.03.07
Дети, не ходите работать программистами