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

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

Проклятый DBGrid [D7, XP]


WhiteCat ©   (2006-07-21 23:45:00) 

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


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

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

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


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


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

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


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

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


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

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


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

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

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


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

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

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


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

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

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


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

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


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

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


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

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;


переделать.


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


>  Проклятый DBGrid


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


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

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


XeON   (2006-07-21 23:52:00) [13]

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


Наверх

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