Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
5-1098557045
Torin
2004-10-23 22:44
2005.09.11
TActionMainMenuBar


3-1122447485
Polyak
2005-07-27 10:58
2005.09.11
Как сжать базу ????


1-1124453135
vigo
2005-08-19 16:05
2005.09.11
Как поменять Font.Color TEdit a (при Enabled = False)?


3-1122805621
NickMan
2005-07-31 14:27
2005.09.11
Можно ли заменить подстроку через запрос?


1-1124258675
kron
2005-08-17 10:04
2005.09.11
pop3 в delphi 7.0





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский