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

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

DBGrid + скролл


RWolf ©   (2009-12-30 16:36:00) 

Подскажите функциональный аналог компонента DBGrid, в котором при прокрутке вертикального скроллбара курсор не перемещается по записям связанного с таблицей источника данных, т. е. ведёт себя, как выделенная строка в StringGrid.
(предполагается, что результаты запроса выкачаны с сервера полностью, так что позиция вертикального скроллбара имеет смысл).


12   (2009-12-31 12:50:00) [1]

не, это пусть автор, меня и так устраивает :)


sniknik   (2009-12-31 12:45:00) [2]

ну попробуй, и посмотри что получится.


12   (2009-12-31 11:16:00) [3]

да почему ж
если все что 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 09:47:00) [4]

> можно попробовать WMVScroll подредактировать
много редактировать придется, и не только в WMVScroll. скорее речь должна идти не о "подредактировании", а о полном переписывании логики.


12   (2009-12-31 09:40:00) [5]

там в предке можно попробовать WMVScroll подредактировать


KilkennyCat   (2009-12-30 22:04:00) [6]

да она может хоть миллион раз изменяться, ничто не мешает помнить нужную.


Сергей М.   (2009-12-30 16:56:00) [7]


> набор записей из кэша связанного датасета.
>


Так ведь при прокуртке кэш как правило обновляется, а значит изменяется и позиция тек.записи ..


Медвежонок Пятачок   (2009-12-30 16:55:00) [8]

стринггрид


RWolf   (2009-12-30 16:53:00) [9]

то же самое, что и DBGrid — набор записей из кэша связанного датасета.


Anatoly Podgoretsky   (2009-12-30 16:46:00) [10]

> RWolf  (30.12.2009 16:36:00)  [0]

Что же он тогда будет показывать в этом случае, ведь в dbgrid нет данных?


Наверх

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