Форум: "Начинающим";
Текущий архив: 2009.02.08;
Скачать: [xml.tar.bz2];
ВнизНеправильно-полосатый Grid Найти похожие ветки
← →
kyn66 © (2008-12-19 15:25) [0]Уважаемые мастера, представляя информацию из таблицы в TGrid-е , я всегда делаю его полосатым. Однако недавно сталкнулся с тем, что полоски формируются неправильно, если таблица индексирована по некоторому полю. http://yurec66.narod.ru/Hlam/vop1.jpg . В данном случае обрабатываю так:
...
Const
BackColors : array[Boolean] of TColor = (clWhite, clBtnFace);
....
procedure TTiragVLFrm.DBGridEh1GetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
Background := BackColors[DM1.SvodTVLTbl.RecNo mod 2 <> 0];
end;
Т.е. в данном случае RecNo не совпадает с номером по ключу. Можно-ли это как побороть, чтобы полоски следовали в четкой последовательности?
← →
Правильный$Вася (2008-12-19 15:29) [1]можно
не использовать RecNo, использовать специальное поле в выборке, нумерующее отсортированную выборку
← →
Виталий Панасенко (2008-12-19 15:30) [2]if Color = ColorValue1 then
Color := ColorValue2
else
Color := ColorValue1;
← →
Jeer © (2008-12-19 15:33) [3]*.DrawCell(ACol, ARow: Longint;
//
if FZebra and Odd(ARow) then begin
Brush.Color := FZebraColor;
Font.Color := FZebraFontColor;
end;
//
← →
Виталий Панасенко (2008-12-19 15:34) [4]Color - глобальная переменная(или поле), инициализируемая при создании формы любым из цветов: colorValue1/2
← →
kyn66 © (2008-12-19 15:37) [5]
> не использовать RecNo, использовать специальное поле в выборке,
> нумерующее отсортированную выборку
Да действительно, сработало. Но в данном случае так попало, что у меня в ключе цифровое поле.
Background := BackColors[DM1.SvodTVLTblTir.Value mod 2 <> 0];
А если не цифровое? А если цифры не по порядку идут? Еще варианты есть? За первый спасибо.
← →
Jeer © (2008-12-19 15:39) [6]
> Виталий Панасенко (19.12.08 15:34) [4]
>
> Color - глобальная переменная(или поле), инициализируемая
> при создании формы любым из цветов: colorValue1/2
Не в курсе, что не стоит использовать имена переменных, совпадающих с именами стандартных свойств ?
← →
Jeer © (2008-12-19 15:40) [7]
> А если не цифровое? А если цифры не по порядку идут? Еще
> варианты есть? За первый спасибо.
Еще раз внимательно посмотри на [3]
Привязываемся к гриду, а не к датасету.
← →
Виталий Панасенко (2008-12-19 15:41) [8]в курсе.. это пример, для наглядности, что где...
← →
kyn66 © (2008-12-19 15:44) [9]
> Еще раз внимательно посмотри на [3]
На какое событие подвешено?
← →
Jeer © (2008-12-19 15:51) [10]*.DrawCell(ACol, ARow: Longint;...)
← →
kyn66 © (2008-12-19 16:04) [11]
> *.DrawCell(ACol, ARow: Longint;...)
не нахожу такого события
← →
Правильный$Вася (2008-12-19 16:20) [12]
> kyn66 © (19.12.08 15:37) [5]
я говорил о СПЕЦИАЛЬНОМ поле, а не о ключе
и не о таблице, а о ВЫБОРКЕ
← →
sniknik © (2008-12-19 21:24) [13]
Const
BackColors : array[Boolean] of TColor = (clWhite, clBtnFace);
type
TDLDBGrid = class(TDBGrid);
....
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
with TDLDBGrid(Sender) do begin
Canvas.Brush.Color:= BackColors[Odd(DataLink.ActiveRecord)];
DefaultDrawDataCell(Rect, Field, State);
end;
end;
← →
Германн © (2008-12-20 01:14) [14]
> sniknik © (19.12.08 21:24) [13]
Ааа. Так вот что имелось в виду в том вопросе о номере строки в DBGrid http://delphimaster.net/view/2-1228492011/
← →
kyn66 © (2008-12-20 10:26) [15]>>sniknik
А в чем преимущества предложенного метода [13] ? Я использую DBGridEh1. А у него есть свое событие DrawDataCell . Что дает внедрение TDLDBGrid ?
← →
Leonid Troyanovsky © (2008-12-20 12:09) [16]
> kyn66 © (20.12.08 10:26) [15]
> Что дает внедрение TDLDBGrid ?
Доступ к DataLink.
> А у него есть свое событие DrawDataCell
Пользуй OnDrawColumnCell.
--
Regards, LVT.
← →
kyn66 © (2008-12-20 13:22) [17]
> Пользуй OnDrawColumnCell.
И что в нем писать для полосатости грида? У меня на этом событии идет отрисовка курсора в таблице.
procedure TTiragVLFrm.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
With TDBGridEh(Sender) do
begin
DefaultDrawColumnCell(Rect,DataCol,Column,State);
if (Rect.Top = CellRect(Col, Row).Top) then
begin
Columns[1].Alignment := taRightJustify;
Columns[2].Alignment := taRightJustify;
Canvas.Brush.Color := clMoneyGreen;
Canvas.Font.Color := clBlack;
Canvas.Font.Style := [fsBold];
// DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
end;
← →
Leonid Troyanovsky © (2008-12-20 13:36) [18]
> kyn66 © (20.12.08 13:22) [17]
> событии идет отрисовка курсора в таблице.
Какого, на, курсора?
У тебя на этом событии бред записан.
--
Regards, LVT.
← →
kyn66 © (2008-12-20 13:42) [19]
> У тебя на этом событии бред записан.
Для кого бред, а все правильно работает. Курсор.... Хм,. неужели здесь на форуме все такие умные, что про элементарное позабыли ? 8). Когда передвигаешься пл гриду вверх - вниз, курсор(гор-ая полоса цвета clMoneyGreen) передвигается по гриду и текст становится жирным, если в фокусе. Проверь у ся это потом про бред говори!
← →
Поросенок Винни-Пух © (2008-12-20 13:44) [20]в ехлибе полосатость поддерживается самим гридом. и писать ничего не надо
← →
kyn66 © (2008-12-20 13:56) [21]
> в ехлибе полосатость поддерживается самим гридом. и писать
> ничего не надо
Там есть особенность для полосатости, ща не помню точно, но не всегда подключается, уже проверял.
← →
Leonid Troyanovsky © (2008-12-20 14:19) [22]
> kyn66 © (20.12.08 13:42) [19]
> Для кого бред, а все правильно работает. Курсор.... Хм,.
> неужели здесь на форуме все такие умные, что про элементарное
> позабыли ? 8). Когда передвигаешься пл гриду вверх - вниз,
> курсор(гор-ая полоса цвета clMoneyGreen)
Я знаю два понятия курсора, которые могут быть связаны с гридом.
Но называть курсором выделенную|текущую|активную строку|ряд|запись
не собираюсь. Потрудитесь выражать свои мысли точней.
А то, что в обработчике написан бред, станет Очевидно после того,
как ты прокомментируешь каждую из написанных там строк.
--
Regards, LVT.
← →
kyn66 © (2008-12-20 14:35) [23]
> как ты прокомментируешь каждую из написанных там строк.
А не проще прикрутить к своему гриду и посмотреть результат. Хорошо, насчет "курсора" - согласен.
← →
Leonid Troyanovsky © (2008-12-20 14:38) [24]
> kyn66 © (20.12.08 14:35) [23]
> А не проще прикрутить к своему гриду и посмотреть результат.
Видишь ли, Юра..
Во-первых, мне жалко мой грид.
Во-вторых, мне это и так очевидно.
В-третьих, разобраться-то нужно именно тебе.
--
Regards, LVT.
← →
kyn66 © (2008-12-20 14:46) [25]
> В-третьих, разобраться-то нужно именно тебе.
Нет, ну зачем плодить ненужные посты. Этот кусок я взял из рабочего кода, для чтобы показать, что у меня на этом событии работает. Неужто нельзя просто сказать, что не так, при том что все работает, что требовалось от этого кода.
← →
Leonid Troyanovsky © (2008-12-20 15:52) [26]
> kyn66 © (20.12.08 14:46) [25]
> при том что все работает, что требовалось от этого кода.
Бред бывает и правдоподобным.
Так, например, излагаются сверхценные идеи.
Что требовалось от каждой строки кода:
if (Rect.Top = CellRect(Col, Row).Top) then
begin
Columns[1].Alignment := taRightJustify;
Columns[2].Alignment := taRightJustify;
?
И почему закомментирован DefaultDrawColumnCell?
И где там "из рабочего кода"?
> Неужто нельзя просто сказать
А что тебе непонятного сказали?
--
Regards, LVT.
← →
Leonid Troyanovsky © (2008-12-20 16:18) [27]
> sniknik © (19.12.08 21:24) [13]
> type
> TDLDBGrid = class(TDBGrid);
Пожалуй, что без полноценного потомка здесь не обойтись.
type
TTDLDBGrid= class(TDBGrid)
protected
procedure Scroll(Distance: Longint); override;
end;
procedure TDLDBGrid.Scroll;
begin
inherited;
Invalidate;
end;
--
Regards, LVT.
← →
Leonid Troyanovsky © (2008-12-20 16:21) [28]
> Leonid Troyanovsky © (20.12.08 16:18) [27]
Ну, и, конечно, public property DataLink, sorry.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2008-12-20 16:44) [29]
> Германн © (20.12.08 01:14) [14]
> Ааа. Так вот что имелось в виду в том вопросе о номере строки
> в DBGrid
Нет, там имелся ввиду номер строки.
--
Regards, LVT.
← →
kyn66 © (2008-12-23 11:36) [30]
> И почему закомментирован DefaultDrawColumnCell?
Он закомментирован в одном месте, и работает в другом. Т.е. как я понимаю, сперва отрабатывают дефолтовые настройки, а уж потом свои. Он сразу стоял там где сейчас закоментирован. Хотя и так и так - одинаково работало ...
> TTDLDBGrid= class(TDBGrid)
А ничего, что у меня используется DBGridEh ?
← →
Leonid Troyanovsky © (2008-12-23 16:19) [31]
> kyn66 © (23.12.08 11:36) [30]
> А ничего, что у меня используется DBGridEh ?
TTDLDBGrid = class (TDBGridEh)
--
Regards, LVT.
← →
dbgrid (2008-12-23 18:18) [32]
> Leonid Troyanovsky © (20.12.08 16:44) [29]
там нужно было передвигать курсор(БД-шный) за курсором мышки:)
← →
Leonid Troyanovsky © (2008-12-23 18:31) [33]
> dbgrid (23.12.08 18:18) [32]
> там нужно было передвигать курсор(БД-шный) за курсором мышки:
Моя твоя не понимать. См [22].
А во-ще
http://www.rsdn.ru/Forum/?mid=907742
--
Regards, LVT.
← →
dbgrid (2008-12-23 18:46) [34]
> Leonid Troyanovsky © (23.12.08 18:31) [33]
> http://www.rsdn.ru/Forum/?mid=907742
понимать-понимать...
а еще твоя хобби буквоедством заниматься - не раскроешь секрет "ну пачиму"?
← →
Leonid Troyanovsky © (2008-12-23 19:05) [35]
> dbgrid (23.12.08 18:46) [34]
> а еще твоя хобби буквоедством заниматься - не раскроешь
> секрет "ну пачиму"?
Плохо ты, брат, мадьяр знаешь!
Никакой я не буквоед, я Начинающим - как родная мама,
просто-таки сопли утираю :)
--
Regards, LVT.
← →
dbgrid (2008-12-23 19:20) [36]
> Leonid Troyanovsky © (23.12.08 19:05) [35]
> Плохо ты, брат, мадьяр знаешь!
эээ... что есть "мадьяр"?
> Никакой я не буквоед, я Начинающим - как родная мама,
> просто-таки сопли утираю :)
оплеухами?
← →
Leonid Troyanovsky © (2008-12-23 19:44) [37]
> dbgrid (23.12.08 19:20) [36]
> эээ... что есть "мадьяр"?
Мадьяр = венгр.
Гашека не читаем? Но, а в Пилзнер ходим.
Плохо-плохо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.02.08;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.006 c