Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.11;
Скачать: CL | DM;

Вниз

Панели DBCtrlGrid цветом из Базы   Найти похожие ветки 

 
Silver ...   (2005-07-29 17:42) [0]

вобшем в базе есть некое значние по етому значению надо делать панели разных цветов но не выходит.
  Какая-то ерунда: Цвета "скачут" меняются когда я перемащаюсь по Контролу


 
Silver... ©   (2005-07-29 17:55) [1]

Уточнение на 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;


 
Reindeer Moss Eater ©   (2005-07-29 18:00) [2]

>Цвета "скачут" меняются когда я перемащаюсь по Контролу

Меняется текущая позиция в датасете.
Срабатывает твой case.
Цвет скачет.
Все как ты и хотел.


 
Silver... ©   (2005-07-29 18:07) [3]

Нет я хотел нечто иное.

Допустим в базе 5 значении, и для них стоят 5 разных цветов. Так я хочу чтоб было 5 TPanel 5 разных цветов, и чтоб ничего не менялось когда я гуляю по DBCtrlGrid-у.

То что я не берно делаю я уже понял :). А как верно?


 
Silver... ©   (2005-07-29 18:11) [4]

я так понимаю должен делать [1] в OnPainte самой TPanel

Как его отловити?


 
Reindeer Moss Eater ©   (2005-07-29 18:11) [5]

А если в таблице 1000 записей?
У тебя будет 1000 строк в TDBCtrlGrid"e?

Так что ли?


 
Reindeer Moss Eater ©   (2005-07-29 18:13) [6]

я так понимаю должен делать [1] в OnPainte самой TPanel

Как его отловити?


Нет разницы где делать это!!!!
Если в чьем-то OnPaint меняется цвет панели, причем значение цвета берется из текущей записи, то цвета будут скакать всегда.


 
Silver... ©   (2005-07-29 18:17) [7]


> Reindeer Moss Eater ©   (29.07.05 18:11) [5]

Теоретичски так. Но по задаче не может быть более 4 на данный момент, а в будушем я полагаю более 10 не ожидается (В смысле активных, видимых).

А в чем проблема-то, даже если так


 
Silver... ©   (2005-07-29 18:20) [8]

я хочу пойти по пути BDGrid - OnDrawColumnCell ... как ето сделать?


 
Reindeer Moss Eater ©   (2005-07-29 18:23) [9]

Нет проблемы.
Как написал так и работает.

Всегда, когда надо нарисовать панель, она рисуется цветом, указанным в текущей записи датасета.

А панель требуется отрисовать в очень многих случаях.
Например текущая запись первая.
Я не трогаю твое приложение вообще, но закрываю его окном браузера. Убираю окно браузера - панель рисуется цветом из первой записи. Причем все панели. Так как все они были затерты окном браузера.
Если активной была запись №2, то все панели отрисуются цветом номер два.


 
Silver... ©   (2005-07-29 18:30) [10]


> Reindeer Moss Eater ©   (29.07.05 18:23) [9]


я то понял но как/где мне сделать чтоб каждая панель имела соответствуиюший ей цвет ну типа как в

BDGrid - OnDrawColumnCell


 
Reindeer Moss Eater ©   (2005-07-29 18:41) [11]

Что значит "соответствуиюший ей цвет" ?

Это цвет назначенный панели независимо от того, какая запись на ней отображается?

Или это цвет, указанный в поле Group в записи, которая отображена на этой панели?


 
Reindeer Moss Eater ©   (2005-07-29 18:49) [12]

Если первое, то причем здесь значение в поле 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;


 
Silver... ©   (2005-07-30 06:01) [13]


> это цвет, указанный в поле Group в записи, которая отображена
> на этой панели?

очени близко, теперь остается разобраться как TPanel на етой самой панели сделать цвета "DBCtrlGrid.Canvas.Brush.Color"
Оставлю ето на др. раз, шас буду спать :)

Кстати указаный мной пример работает Так: Все рисуется как надо но когда перемещауысь по записям активная цвета Последней записи. Может надо как-нить другой цвет указать.
Но шас уже не в состоянии мыслить иду спать


 
Anatoly Podgoretsky ©   (2005-07-30 15:17) [14]

Отказаться от условия "вобшем в базе есть некое значние по етому значению надо делать панели разных цветов", ксли оставлять это условия, то у тебя все работает правильно, в соответствии с данным услосием.


 
Silver... ©   (2005-08-01 03:28) [15]

Всё оказалось проще:
Добавил DBCtrlGrid.SelectedColor := clBlue; и всё как по маслу пошло :)

Спасибо всем за участие



Страницы: 1 вся ветка

Текущий архив: 2005.09.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
1-1124796950
Jolik
2005-08-23 15:35
2005.09.11
exception в finally


14-1124184531
Игорь Шевченко
2005-08-16 13:28
2005.09.11
О вечном :)


14-1124259913
geidarka
2005-08-17 10:25
2005.09.11
UTF-8 редакторы


6-1116873680
Lela
2005-05-23 22:41
2005.09.11
HTML


2-1123309367
Андрей235
2005-08-06 10:22
2005.09.11
вывести в Caption или text integer переменную или string=integer