Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.09.2007, 11:24   #1
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
Вопрос заливка строк DBGrid'а

всем дратси.
нужно осуществить заливку строк грида, по условию, если в БД в поле "grup" существует значение "1", то строка, соержащая это значение, заливается синим цветом; если значение "2", то строка, соержащая это значение, заливается зеленым цветом; если "3", то строка, соержащая это значение, заливается красным цветом, а если есть все эти значения в столбце БД, то строки должны быть раскрашены в соответсвующие значениям цвета. нжно оформить именно заливку, а не изменение цвета шрифта текста.
как быть?
antoniosm вне форума
Старый 14.09.2007, 11:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Для своего DBGrid (если конечно его используеш) пропиши событие OnDrawDataCell типа такого:

Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
if (Field.AsString='1') then begin
 DBGrid1.Canvas.Brush.Color:=clblue;
 DBGrid1.Canvas.FillRect(rect);
 DBGrid1.Canvas.TextOut(Rect.Left,Rect.Top,Field.AsString);
end;

И так далее по каждому цвету
end;
Смысл ясен?
I'm learning to live...

Последний раз редактировалось mihali4; 17.01.2010 в 16:01.
Stilet вне форума
Старый 14.09.2007, 12:15   #3
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

заливает только ячейку с таким значением, а мне нужно полностью строку.
antoniosm вне форума
Старый 14.09.2007, 12:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда так :

Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin

if (Table1.FieldByName('grup').AsString ='0') then begin
  DBGrid1.Canvas.Brush.Color:=clblue;
  DBGrid1.Canvas.FillRect(rect);
  DBGrid1.Canvas.TextOut(Rect.Left,Rect.Top,Field.AsString);
end;
end;
I'm learning to live...

Последний раз редактировалось mihali4; 17.01.2010 в 16:01.
Stilet вне форума
Старый 14.09.2007, 12:31   #5
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

Код:
if ADOQuery1.FieldValues['grup'] ='123' then
      begin
        DBGrid1.Canvas.FillRect(rect);
      with DBGrid1.Canvas do
        begin
          brush.color:=clRed;
          TextOut(rect.Left,rect.Top,Column.Field.text);
      end;
    end;
заливает строки, только посимвольно каждую ячейку, т.е. каждому символу в ячейке присваивает фон. заливает ячейку не полностью по "длине" данных. мне нужно залить полностью все ячейки в данной строке, независимо от количества символов в ней.
antoniosm вне форума
Старый 14.09.2007, 21:22   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Вообще-то, событие onDrawDataCell работает очень медленно. Я провел некоторые тесты по этому поводу...
В компоненте TDBGridEh есть событие onGetCellParams.
Пишем что-то вроде этого
Код:
procedure TfrmMain.DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh;
   AFont: TFont; var Background: TColor; State: TGridDrawState);
begin
   if TableNomer.Value = 100 then
   begin
      Background := clRed;
      AFont.Style := [fsBold];
   end;
end;
Работает раз в 10 быстрее. (Спасибо Андрею Большакову)
_SERGEYX_ вне форума
Старый 17.09.2007, 07:07   #7
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

TDBGridEh - что енто за компонент и где находится?
antoniosm вне форума
Старый 17.09.2007, 12:47   #8
Nemon
Армия Рассейская
Форумчанин
 
Аватар для Nemon
 
Регистрация: 06.12.2006
Сообщений: 175
По умолчанию

Цитата:
Сообщение от antoniosm Посмотреть сообщение
TDBGridEh - что енто за компонент и где находится?
Есть такой компонент EhLib - DBGridEh именно из ее состава.
Сделаем ночь ярче!!! - Ракетные войска стратегического назначения
Центральный клуб туристов РВСН
Nemon вне форума
Старый 18.09.2007, 05:19   #9
antoniosm
Пользователь
 
Регистрация: 05.09.2007
Сообщений: 14
По умолчанию

на какой вкладке найти их можно в делфи 7?
antoniosm вне форума
Старый 18.09.2007, 09:09   #10
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от antoniosm Посмотреть сообщение
на какой вкладке найти их можно в делфи 7?
этот компонент устанавливать нужно....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заливка и увеличительное стекло Aptyp Общие вопросы Delphi 6 04.01.2010 22:49
Градиентная заливка APi функция GradientFillRect в Delphi Roberto Win Api 7 11.04.2008 13:34
Excel max 256 строк VS user надо 300 строк Exo Microsoft Office Excel 3 10.01.2008 17:14
Сжатие строК! prizrak1390 Общие вопросы Delphi 16 02.01.2008 17:15
Заливка с допуском devi409 Общие вопросы Delphi 11 15.10.2007 06:57