Форум: "Базы";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизПанели 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c