Форум: "Начинающим";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
ВнизПолучить значение поля предидущей записи в DBGrid Найти похожие ветки
← →
webpauk © (2009-12-21 15:37) [0]Хочу раскрасить DBGrid в соответствии со значением поля IDObject
База отсортирована по полю IDObject
Как получить значение IDObject для предидущей строки?
текущую вроде бы можно получить черезTDBGrid(Sender).DataSource.DataSet.FieldByName("IDObject").AsInteger
← →
webpauk © (2009-12-21 15:39) [1]имеется в виду метод:
procedure TForm.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
← →
Юрий Зотов © (2009-12-21 16:35) [2]В DBGrid нет ни предыдущей, ни текущей, ни следующей записи. Они есть в DataSet"е. Получаются методами Prev и Next. Причем зависят от запроса и способа его сортировки.
← →
Sergey13 © (2009-12-21 16:39) [3]> [0] webpauk © (21.12.09 15:37)
Поищи на королевстве статью "Полосатый грид".
← →
Германн © (2009-12-21 16:45) [4]
> имеется в виду метод:
> procedure TForm.DBGridDrawColumnCell
Для такого рисования достаточно знать только текущую.
← →
Ega23 © (2009-12-21 17:00) [5]
> Хочу раскрасить DBGrid в соответствии со значением поля
> IDObject
Ну и нафига тебе тогда "предыдущее" значение? Есть текущее - в соответствии с ним и крась.
← →
webpauk © (2009-12-22 09:39) [6]
> Ega23 © (21.12.09 17:00) [5]
>
скажем, нужно раскрасить все записи 2 цветами, причем все с одинаковым IDObject - одним цветом. Не зная предыдущего значения - не знаю каким цветом закрашивать...
← →
Медвежонок Пятачок © (2009-12-22 09:46) [7]причем все с одинаковым IDObject - одним цветом. Не зная предыдущего значения - не знаю каким цветом закрашивать...
какая жуть .....
а значение пред-предыдущего знать не надо? а его предшественника?
а остальных?
← →
zorik © (2009-12-22 09:47) [8]Предварительно создать массив (список) типа record(idobject, color). Заполнить его отношениями какому id какой цвет отвечает. При закраске грида искать в массиве (списке) нужный цвет
← →
zorik © (2009-12-22 09:50) [9]
> кажем, нужно раскрасить все записи 2 цветами, причем все
> с одинаковым IDObject - одним цветом. Не зная предыдущего
> значения - не знаю каким цветом закрашивать...
Нужно ВСЕ записи с одинаковым IDObject или если записи с одинаковым IDObject идут ПОДРЯД.
Возможно отсортировано по IDObject?
← →
webpauk © (2009-12-22 11:17) [10]O!
const
cColorArr: array[Boolean] of TColor = (clYellow, clMoneyGreen);
type
TForm1 = class(TForm)
Grid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure Grid1GridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
private
fCurrentColor: Boolean;
fCurrentIDObject: Integer;
end;
...
procedure TCommon_Main.PanelGrid1GridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if TDBGrid(Sender).DataSource.DataSet.FieldByName("IDObject").AsInteger<>fCurrentID Object then
begin
fCurrentColor:=not fCurrentColor;
fCurrentIDObject:=TDBGrid(Sender).DataSource.DataSet.FieldByName("IDObject").AsI nteger;
end;
TDBGrid(Sender).Canvas.Brush.Color:=cColorArr[fCurrentColor];
TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
← →
Медвежонок Пятачок © (2009-12-22 11:20) [11]только никому больше не показывай.
← →
webpauk © (2009-12-22 11:21) [12]мля... работает тока при первой отрисовке... 8(
← →
Медвежонок Пятачок © (2009-12-22 11:22) [13]блокируй клаву после первой отрисовки.
чтобы юзер не портил картину
← →
webpauk © (2009-12-22 11:37) [14]
> Медвежонок Пятачок © (22.12.09 11:22) [13]
>
точно! как я ни дагадалси!
а еще лучше, чтобы взрывался монитор и юзеру рвало голову нафиг!
← →
webpauk © (2009-12-22 11:38) [15]
> zorik © (22.12.09 09:47) [8]
>
пошел через этот путь. работаеит!
← →
Германн © (2009-12-22 11:42) [16]
> webpauk © (22.12.09 11:17) [10]
Похожий бред я уже на форуме видел. :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c