Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.03.2010, 18:40
mli mli вне форума
Прохожий
 
Регистрация: 18.03.2010
Сообщения: 1
Репутация: 10
По умолчанию Закрепить столбец DBGrid

Можно ли как-то закрепить первый столбец DBGrid , чтобы он оставался на экране при прокрутке?
Ответить с цитированием
  #2  
Старый 18.03.2010, 19:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Нашел такое вот решение, но не проверял:

Код:
Как зафиксировать столбцы в DBGrid

Это маленькая вставка в Ваш наследник от tcustomdbgrid, которая решает данную
задачу.

=== begin dbgridex.pas ===
// ----------------------------------------------------------------------------
-
destructor tdbgridex.destroy;
begin

_hidecolumnsvalues.free;
_hidecolumns.free;

inherited destroy;
end;

// ----------------------------------------------------------------------------
constructor tdbgridex.create(component : tcomponent);
begin
inherited create(component);

ffreezecols := ?;

_hidecolumnsvalues := tlist.create;
_hidecolumns := tlist.create;
end;

// ----------------------------------------------------------------------------
procedure tdbgridex.keydown(var key: word; shift: tshiftstate);
begin
if (key = vk_left) then colbeforeenter(-1);
if (key = vk_right) then colbeforeenter(1);

inherited;
end;

// ----------------------------------------------------------------------------
procedure tdbgridex.setfreezecolor(acolor : tcolor);
begin
invalidaterow(0);
end;

// ----------------------------------------------------------------------------
procedure tdbgridex.setfreezecols(afreezecols : integer);
begin
ffreezecols := afreezecols;
invalidaterow(0);
end;

// ----------------------------------------------------------------------------
procedure tdbgridex.colenter;
begin
colbeforeenter(0);

if assigned(oncolenter) then oncolenter(self);
end;

// ----------------------------------------------------------------------------
procedure tdbgridex.colbeforeenter(adelta : integer);
var
nindex : integer;

function readwidth : integer;
var
i : integer;

begin
i := _hidecolumns.indexof(columns[nindex]);

if i = -1
then result := 120
else result := integer(_hidecolumnsvalues[i]);
end;

procedure savewidth;
var
i : integer;

begin
i := _hidecolumns.indexof(columns[nindex]);
if i <> - 1 then
begin
_hidecolumnsvalues[i] := pointer(columns[nindex].width);
end else
begin
_hidecolumns.add(columns[nindex]);
_hidecolumnsvalues.add(pointer(columns[nindex].width));
end;

begin
for nindex := 0 to columns.count - 1 do
begin
if (columns[nindex].width = 0) then
begin
if (nindex + 1 <= freezecols) or (nindex >= selectedindex + adelta)
then columns[nindex].width := readwidth;
end
else
begin
savewidth;
if (nindex + 1 > freezecols) and
(nindex < selectedindex + adelta) and
(nindex + 1 < columns.count) and
(freezecols > 0)
then columns[nindex].width := 0;
end;

=== end dbgridex.pas ==
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:07.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter