-
Доброго времени суток, мастера. На форме лежит TDBGridEh. По идее он должен иметь возможность самостоятельно рисоваться полосатым. Однако это не происходит. Какое условие должно выполняться, чтобы он рисовался полосатым? Если устанавливаю
OddRowColor в свой цвет - ничего не происходит. Обычно для отрисовки полосатости привязываюсь к таблице. Но это гладко проходит, если используется компонент TTable.
procedure TTovarFrm.DBGridEh1GetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
if (DM1.TovarTbl.RecNo mod 2 <> 0) then
Background := clWhite
else
Background := clBtnFace;
end;
В данном случае задейсвован TQuery. А с ним есть проблемы, используя данный метод. Полосатость может нарушиться.
-
Справка, выдержка.
pecifies the color of odd rows in the grid.
property OddRowColor: TColor;
Description
Use OddRowColor to specify the color of odd rows in the grid. It works only if sequence numbers are available for DataSet(DataSet.IsSequenced = True) and DataSet.RecNo return valid info. More often you will use OddRowColor in combination with EvenRowColor.
EhLib Software
-
ДА, действительно так работает. Спасибо. Посмотрим как в дальнейшем будет отрабатывать при большем кол-ве записей.
-
Не работает, для TQuery идет сбой в очередности полос-зебры.
-
А поставить брейкпойнт на строчку
if (DM1.TovarTbl.RecNo mod 2 <> 0) then
и посмотреть под отладчиком, чему же на самом деле равен RecNo, Коран не позволяет ?
-
> Не работает, для TQuery идет сбой в очередности полос-зебры.
Всё просто. TDataSet.RecNo - штука такая. Неопределённая. Зависит от многих вещей.
-
> kyn66 © (19.05.09 16:10) [3]
>
> Не работает, для TQuery идет сбой в очередности полос-зебры.
>
А зачем применять СВОЙ метод, если есть готовый у EhLib? и выполняется условие
> It works only if sequence numbers are available for DataSet(DataSet.
> IsSequenced = True) and DataSet.RecNo return valid info
?
-
> [5] Ega23 © (19.05.09 16:54)
> Всё просто. TDataSet.RecNo - штука такая. Неопределённая.
И переопределённая.:)
-
возникает такой же вопрос вкупе с датасетом из FIBPlus.
Почему то корректно прорисовывает только если :
1) все строки вмещаются в видимую часть грида
2) если проскроллировать до низу, а потом делать скролл вверх, то за курсором начинает прорисовываться
3) Если выбрать все записи по FetchAll
Считаю все три способа корявыми, а как же правильно делать то?
-
> Александр из Перми (20.05.09 22:15) [8]
1: вариант 3) - самое то :)
2: стоит узнать о IB/FB немного больше...
3: Заместо EhLib надо использовать DevExpress, в качестве
альтернативы которого EhLib и создавался.
-
> 1: вариант 3) - самое то :)
Серьезно или шутка? (смайлик смущает, хочется однозначного ответа) А если записей много? Или Очень много? Это все кэшируется у клиента чтоле?
2: стоит узнать о IB/FB немного больше...
стоит узнать о IB/FB намного больше (нутром чюю, плаваю) Изучаю.
А компоненты от Девэкспресс свободны от темы сабжа?
-
> Александр из Перми (20.05.09 22:46) [10]
>
>
> > 1: вариант 3) - самое то :)
>
> Серьезно или шутка?
Серьезно.
>
> А компоненты от Девэкспресс свободны от темы сабжа?
Эээммм.. Трудно связать тему сабжа ( :) ) с девекспресс, но телепатор
подсказывает, что свободны :) там полосатость делается совсем не так, если что.
-
-
> Александр из Перми (20.05.09 22:15) [8]
Нужно, чтобы было правильное значение RecordCount
-
2) и 3) как раз этому и способствуют
-
> Нужно, чтобы было правильное значение RecordCount
RecordCount - правильное. Нужно чтобы RecNo правильным быд. А это - не всегда. :)
-
> Нужно, чтобы было правильное значение RecordCount
Если быть точнее, то RecNo А он действительно иногда не правильно выстраивается. Замечено, что все траблы возникают, если включена индексация, т.е. записи выстроены по ключевому полю. А как это побороть - не знаю
-
А как у кверика может быть не подряд RecNo?
> В данном случае задейсвован TQuery. А с ним есть проблемы,
> используя данный метод. Полосатость может нарушиться.
>
И при чем тут индексация к кверику?
-
> А как у кверика может быть не подряд RecNo?
Легко. ЕМНИП, в TRxQuery RecNo всегда равен -1, если в НД присутствует хотя бы одно BLOB-поле (или строковое, больше чем 255, что тоже BLOB).
Далее. Вот есть таблица с полем ID, значения [1..100].
Вот мы выполнили Select * from table order by ID.
Предположим, наш потомок TDataSet корректно работает с RecNo - в нём действительно то, что мы ожидаем.
А теперь мы наложили на эту байду фильтр. Или отсортировали его по другому полю (не средствами SQL, а через IndexField).
Лично я затрудняюсь сказать, что в данном случае будет с RecNo (особенно в случае фильтра).
-
:-) с дуру можно и .. поломать... несмотря на то, что это - ГИДРАВЛИКА! :-)))))