Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Панели 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо