![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Панели DBCtrlGrid цветом из Базы [D7, WinXP]
Silver ... © (2005-07-29 17:42:00)вобшем в базе есть некое значние по етому значению надо делать панели разных цветов но не выходит.
Какая-то ерунда: Цвета "скачут" меняются когда я перемащаюсь по Контролу
Silver... (2005-08-01 03:28:00) [1]Всё оказалось проще:
ДобавилDBCtrlGrid.SelectedColor := clBlue;и всё как по маслу пошло :)
Спасибо всем за участие
Anatoly Podgoretsky (2005-07-30 15:17:00) [2]Отказаться от условия " вобшем в базе есть некое значние по етому значению надо делать панели разных цветов", ксли оставлять это условия, то у тебя все работает правильно, в соответствии с данным услосием.
Silver... (2005-07-30 06:01:00) [3]
> это цвет, указанный в поле Group в записи, которая отображена
> на этой панели?
очени близко, теперь остается разобраться как TPanel на етой самой панели сделать цвета "DBCtrlGrid.Canvas.Brush.Color"
Оставлю ето на др. раз, шас буду спать :)
Кстати указаный мной пример работает Так: Все рисуется как надо но когда перемещауысь по записям активная цвета Последней записи. Может надо как-нить другой цвет указать.
Но шас уже не в состоянии мыслить иду спать
Reindeer Moss Eater (2005-07-29 18:49:00) [4]Если первое, то причем здесь значение в поле Group?
Цвет определяется только индексом панели.
Если второе, то :
procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid; Index: Integer);
begin
case FieldByName('Group').AsInteger of
0 : DBCtrlGrid.Canvas.Brush.Color := clYellow;
1 : DBCtrlGrid.Canvas.Brush.Color := clRed;
else DBCtrlGrid.Canvas.Brush.Color := clBlue;
end;
DBCtrlGrid.Canvas.FillRect(Rect(0,0,DBCtrlGrid.PanelWidth,DBCtrlGrid.PanelHeight));
end;
Reindeer Moss Eater (2005-07-29 18:41:00) [5]Что значит "соответствуиюший ей цвет" ?
Это цвет назначенный панели независимо от того, какая запись на ней отображается?
Или это цвет, указанный в поле Group в записи, которая отображена на этой панели?
Silver... (2005-07-29 18:30:00) [6]
> Reindeer Moss Eater © (29.07.05 18:23) [9]
я то понял но как/где мне сделать чтоб каждая панель имела соответствуиюший ей цвет ну типа как в
BDGrid - OnDrawColumnCell
Reindeer Moss Eater (2005-07-29 18:23:00) [7]Нет проблемы.
Как написал так и работает.
Всегда, когда надо нарисовать панель, она рисуется цветом, указанным в текущей записи датасета.
А панель требуется отрисовать в очень многих случаях.
Например текущая запись первая.
Я не трогаю твое приложение вообще, но закрываю его окном браузера. Убираю окно браузера - панель рисуется цветом из первой записи. Причем все панели. Так как все они были затерты окном браузера.
Если активной была запись №2, то все панели отрисуются цветом номер два.
Silver... (2005-07-29 18:20:00) [8]я хочу пойти по пути BDGrid - OnDrawColumnCell ... как ето сделать?
Silver... (2005-07-29 18:17:00) [9]
> Reindeer Moss Eater © (29.07.05 18:11) [5]
Теоретичски так. Но по задаче не может быть более 4 на данный момент, а в будушем я полагаю более 10 не ожидается (В смысле активных, видимых).
А в чем проблема-то, даже если так
Reindeer Moss Eater (2005-07-29 18:13:00) [10]я так понимаю должен делать [1] в OnPainte самой TPanel
Как его отловити?
Нет разницы где делать это!!!!
Если в чьем-то OnPaint меняется цвет панели, причем значение цвета берется из текущей записи, то цвета будут скакать всегда.
Silver... (2005-07-29 18:11:00) [11]я так понимаю должен делать [1] в OnPainte самой TPanel
Как его отловити?
Reindeer Moss Eater (2005-07-29 18:11:00) [12]А если в таблице 1000 записей?
У тебя будет 1000 строк в TDBCtrlGrid'e?
Так что ли?
Silver... (2005-07-29 18:07:00) [13]Нет я хотел нечто иное.
Допустим в базе 5 значении, и для них стоят 5 разных цветов. Так я хочу чтоб было 5 TPanel 5 разных цветов, и чтоб ничего не менялось когда я гуляю по DBCtrlGrid-у.
То что я не берно делаю я уже понял :). А как верно?
Reindeer Moss Eater (2005-07-29 18:00:00) [14]>Цвета "скачут" меняются когда я перемащаюсь по Контролу
Меняется текущая позиция в датасете.
Срабатывает твой case.
Цвет скачет.
Все как ты и хотел.
Silver... (2005-07-29 17:55:00) [15]Уточнение на DBCtrlGrid-е ести TPanel ему-то и ставлю цвет.
Делаю так:
procedure TMyForm.DBCtrlGridPaintPanel(DBCtrlGrid: TDBCtrlGrid; Index: Integer);
begin
with MyPanel do
begin
case DBCtrlGrid.DataSource.DataSet.FieldByName('Group').Value of
0: Color := clOlive;
1: Color := clYellow;
2: Color := clSkyBlue;
3: Color := clRed;
end;
end;
end;