Главная страница
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.012 c
2-1261733510
2expres
2009-12-25 12:31
2010.03.07
Mediaplayer


15-1261060246
Alkid
2009-12-17 17:30
2010.03.07
Кража импульса.


4-1229691321
Ort
2008-12-19 15:55
2010.03.07
Неправильно работает нажатие на клавиши


2-1262806559
pavel_guzhanov
2010-01-06 22:35
2010.03.07
Странная работа ADOQuery


1-1239268291
sniknik
2009-04-09 13:11
2010.03.07
Ошибка преобразования RTF в PlainText через TRichEdit