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

Вниз

Проклятый DBGrid   Найти похожие ветки 

 
WhiteCat   (2006-07-21 23:45) [0]

Здравствуйте! Подскажите, пожалуйста, могу я сделать скролирование в DBGrid как в Excel? Т.е. чтоб фокус с выбранной строки не соскавивал при прокрутке сетки.


 
XeON ©   (2006-07-21 23:52) [1]

Попробуй взять сторонние компоненты DBGrid. Будет тебе и фокус не соскакивающий и всё что угодно. Они намного практичнее.


 
WhiteCat   (2006-07-21 23:55) [2]

Ну в принципе я и пользуюсь сторонним компонетом - JVCL. Какие у меня есть возможности реализовать задуманное?


 
Gydvin ©   (2006-07-22 00:01) [3]


>  Проклятый DBGrid


Может побрызгать святой водой? :)))


 
KilkennyCat ©   (2006-07-22 00:06) [4]

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;


переделать.


 
WhiteCat   (2006-07-22 00:12) [5]

To KilkennyCat
 Спасибо, брат!
 
Правда, получается нужен свой компонент, который еще и регить в системе нуна. Или возможны варианты?


 
KilkennyCat ©   (2006-07-22 00:15) [6]

Возможно исправить генофонд. Но это чревато многим, в том числе забитием меня ногами остальными форумчанами :)
Но а чего там писать-то... наследование, инкапсуляция и полиморфизм облегчают жизнь...


 
WhiteCat   (2006-07-22 00:16) [7]

ХА! Посмотрел внимательнее! И что здесь можно переделать?
Как прокрутить сетку оставив фокус на выбранной строке?

Уточняю: Подскажте команду которая покажет мне последнюю линию в сетке, а выбранной останется первая(к примеру)


 
WhiteCat   (2006-07-22 00:17) [8]

ХА! Посмотрел внимательнее! И что здесь можно переделать?
Как прокрутить сетку оставив фокус на выбранной строке?

Уточняю: Подскажте команду которая покажет мне последнюю линию в сетке, а выбранной останется первая(к примеру)


 
WhiteCat   (2006-07-23 22:19) [9]

to Gydvin
 Так что идти за святой водой?
или все же
 Как прокрутить сетку оставив фокус на выбранной строке?

Уточняю: Подскажте команду которая покажет мне последнюю линию в сетке( при большом количестве строк), а выбранной останется первая(к примеру)


 
Desdechado ©   (2006-07-24 10:38) [10]

Не может быть выбранным то, чего не видно. А при скроллинге до последней строки текущая может уйти за пределы видимости.


 
WhiteCat   (2006-07-24 12:49) [11]

to Desdechado
 т.е. сделать скролинг, подобный Excel с помощью DBGrid невозможно?


 
Плохиш ©   (2006-07-24 12:52) [12]


> WhiteCat   (24.07.06 12:49) [11]
> to Desdechado
>  т.е. сделать скролинг, подобный Excel с помощью DBGrid
> невозможно?

DBGrid не предназначен для этого, он отображает только часть данных, которые помещаются на экран, о других данных из привязанного источника DBGrid ничего не знает.


 
WhiteCat   (2006-07-24 15:46) [13]

to KilkennyCat
Так что Кот из киллкенни, привет тебе от белого брата. Ничего не поможет, даже наследование с полиморфизмом.

Всем спасибо.



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
3-1149327665
Dust
2006-06-03 13:41
2006.08.13
Пример работы с базой (хочу идеальный код)


2-1153822432
rlzz
2006-07-25 14:13
2006.08.13
А как таймер в dll сделать


1-1151743737
mrAld
2006-07-01 12:48
2006.08.13
сборка через консоль


2-1153711774
fantasy
2006-07-24 07:29
2006.08.13
Edit


3-1145355789
Квэнди
2006-04-18 14:23
2006.08.13
Dbexpress+ mysql5