![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Полосатый" DBGrid и несколько выделенных записей ... [D7, XP]
TUserClass © (2008-07-11 11:03:00)Доброе утро знатокам! :)
Вот захотелось немного расскрасить строки грида через одну, код следующий (в DrawColumnCell):
If TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1 then begin
TDBGrid(Sender).Canvas.Brush.Color := GridODDColor;
end;
If gdSelected in State then begin
TDBGrid(Sender).Canvas.Brush.Color := clHighLight;
TDBGrid(Sender).Canvas.Font.Color := clHighLightText;
end else begin
TDBGrid(Sender).Canvas.Font.Color := clWindowText;
end;
Но вот если выделено несколько записей, то higlight'ом отрисовываются только те выделенные строки, которые не попадают под это условиеTDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1, а те которые попадают, рисуются цветомGridODDColor. И даже If gdSelected in State then beginне помогает (помогает, толькое если выделенна одна запись). Перепробовал весь набор State, все равно не помогает. Есть ли способ исправить это, не перебирая SelectedRows?
TUserClass (2008-07-11 17:21:00) [1]
> Поросенок Винни-Пух © (11.07.08 16:46) [32]
Убрал RowSelect, по твоему совету и спер из какого-то зарубежья вот такой кусок кода.
TFriendlyGrid = class(TCustomDBGrid);
...
With TFriendlyGrid(Sender) do
begin
If TDataLink(DataLink).ActiveRecord = Row - 1 then begin
With Canvas do begin
Brush.Color := clHighlight;
DefaultDrawColumnCell (Rect, DataCol, Column, State);
end;
end;
end;
И все заработало ... Всем спасибо ...
Поросенок Винни-Пух (2008-07-11 16:46:00) [2]ставя роуселект ты говоришь гриду : мне нафик не надо бегать фокусом по полям текущей записи.
грид тебя понимает и скроллит влево, так как право тебя не интересует.
ась? что? оно тебя на самом деле интересует?
ну так выключи роуселект.
Хочется чтобы вся строка светилась?
качай ехлиб и смотри как там роухайлайт реализовано.
TUserClass (2008-07-11 16:40:00) [3]
> Поросенок Винни-Пух © (11.07.08 16:34) [30]
эх....а подругому никак? - очень хотелось бы оставить ровселект ((((
Поросенок Винни-Пух (2008-07-11 16:34:00) [4]лечится убиранием dgRowSelect
TUserClass (2008-07-11 16:23:00) [5]Еще вопросик возник.
Если поставить у грида в оптионах dgRowSelect, то при клике по этому злощастному гриду его горизонтальный скролбар уходит в самое влево и ... и ... и некрасиво получается. Кто это вообще придумал? Это как-нибудь лечится? :)
Dennis I. Komarov (2008-07-11 12:28:00) [6]> [26] TUserClass © (11.07.08 12:17)
Суть темы: Тебе сказали как надо, но ты не хочешь, потому как лень...
Anatoly Podgoretsky (2008-07-11 12:27:00) [7]> TUserClass (11.07.2008 11:46:15) [15]
Никто не гарантирует непрерывную последовательность или даже просто последовательность.
TUserClass (2008-07-11 12:17:00) [8]
> Dennis I. Komarov © (11.07.08 12:15) [25]
Ну может быть ... :) - но пока не в этом суть данной темы :)
Dennis I. Komarov (2008-07-11 12:15:00) [9]> [24] TUserClass © (11.07.08 12:12)
Ф топку...
Юзеру надо видеть только то что нужно. Мне, почти всегда, хватает одного TDataSet. А про гриды вообще умалчу...
TUserClass (2008-07-11 12:12:00) [10]
> Dennis I. Komarov © (11.07.08 12:10) [23]
100 TabSheet'ов с Гридами на PageControl'е :) - Да и много таблиц не предусмотрено :)
Dennis I. Komarov (2008-07-11 12:10:00) [11]> [22] TUserClass © (11.07.08 12:04)
Сильно... В базе 100 таблиц - на форме 100 гридав :)
TUserClass (2008-07-11 12:04:00) [12]
> Ega23 © (11.07.08 12:03) [21]
Да их никто не кидает - сами создаюЦа, в зависимости от кол-ва таблиц в базе... :)
Ega23 (2008-07-11 12:03:00) [13]
> УУУ...долго (((
А ты думал всё киданием компонентов ограничивается?
TUserClass (2008-07-11 11:51:00) [14]Щас еще пороюсь в инете - если ничего не найду - пойду плясать от кустома :)
Поросенок Винни-Пух (2008-07-11 11:51:00) [15]УУУ...долго (((
ага. от трех до пяти с конфискацией.
TUserClass (2008-07-11 11:50:00) [16]
> Поросенок Винни-Пух © (11.07.08 11:46) [17]
УУУ...долго (((
Поросенок Винни-Пух (2008-07-11 11:46:00) [17]Пляши от протектед номера строки TCustomGrid
Dennis I. Komarov (2008-07-11 11:46:00) [18]> Ну ты мне придумай другое условие
Зачем?
> я пока не нашел...
И кто в этом виноват?
TUserClass (2008-07-11 11:46:00) [19]
> Anatoly Podgoretsky © (11.07.08 11:42) [14]
Я сначала подумывал
If Rect.Top <> PrevRectTop then beign
ChangeColor := not ChangeColor;
end;
PrevRectTop := Rect.Top;
Но как то глупо получается ... Да и при прокрутке на одну запись Вверх/Вниз сбивается - для полного удовлетворения мне надо именно получить порядковый номер рисуемой записи...а как - я пока не знаю (((
Anatoly Podgoretsky (2008-07-11 11:42:00) [20]
> Ну не в этом суть - как мне некрасить выделенне то ? :)
Сменить логику if then else а не грубо копировать код.