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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2015, 17:12   #11
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Спасибо Stilet! и за наводку Аватар! Разобрался! Получилось так...

Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
var
  holdColor: TColor;e,u:integer;
begin
 with DBGrid1.Canvas do begin
 if TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1  then  begin
   Brush.Color:=clWhite
   Font.Color:=clblack;
  end else begin
   Brush.Color:=clblack;
   Font.Color:=clWhite;
  end;
  FillRect(rect);
  TextOut(Rect.Left,Rect.Top,Field.AsString);
 end;
end;

Последний раз редактировалось S_007; 12.05.2015 в 17:14.
S_007 вне форума Ответить с цитированием
Старый 12.05.2015, 17:15   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Эх студент студент...
Код:
if odd(TDbGrid(Sender).DataSource.DataSet.RecNo) then
Все. Дальше сам.
Если RecNo дает -1 сделай глобальную переменную, которую увеличивай на единицу, пока событие по всем записям не пройдет - это тебе домашка будет )
Цитата:
Получилось так...
Ну можно и так )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2015, 17:25   #13
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Stilet, я даже не студент, а просто самоучка, не знаю как благодарить Вас, за Ваш форум, благодаря ему и вашей терпимости и отзывчивости к таким ка я... я что-то начинаю делать...
Низкий поклон Вам! Дай Вам Бог!
Спасибо!
С уважением
S_007 вне форума Ответить с цитированием
Старый 12.05.2015, 17:28   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а просто самоучка
Тогда книжками обкладывайся. В хелп заглядывай почаще. Если бы сразу, как Аватар отписалс, набрал в хелпе слово RecNo вопросов то и не было бы.
Ну и храни ссылку на Delphi world. Там найдешь много примеров, которые на мысли наталкивают. Плюс наш форум.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2015, 07:48   #15
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Похоже я рано радовался... Строки в таблице разноцветные, все красиво, но теперь если я щелкаю чтоб выделить строку, она не становится синей как раньше
Можно как то сделать чтоб работало и то и другое?
S_007 вне форума Ответить с цитированием
Старый 13.05.2015, 08:54   #16
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Можно как то сделать чтоб работало и то и другое?
Можно, но рисовать выделение придется самому. Для этого достаточно при отрисовке анализировать флаг State: TGridDrawState и делать соответствующие поправки к рисованию (использовать нужные цвета).
Цитата:
Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
Цитата:
В хелп заглядывай почаще.
Цитата:
TGridDrawState represents state information about the cell of a grid that is being rendered. It is a set that includes 0 or more of the following:

Value Meaning

gdSelected The cell is currently selected.
gdFocused The cell has input focus.
gdFixed The cell is in the fixed region of the grid.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.05.2015 в 08:58.
evg_m вне форума Ответить с цитированием
Старый 13.05.2015, 08:56   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можно как то сделать чтоб работало и то и другое?
Можно. Опиши переменку (Глобальную), которая в событии AfterScroll будет принимать DataSet.Recno; Типа запомнить кликнутую запись.
И допилить событие отрисовки
Код:
 if TDBGrid(Sender).DataSource.DataSet.RecNo = <Та самая переменка>  then  begin
  Заливаем неким цветом
  Выводим некий текст на канву
  exit;
 end;
 if TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1  then  begin
Цитата:
флаг State: TGridDrawState
Там можно узнать какая ячейка кликнута, а вот с номером записи, боюсь будет труднее. По крайней мере мне нормально не удавалось, поэтому я использовал всегда глобальную переменку, как описал выше.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2015, 09:31   #18
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Получилось так... Только теперь почему-то таким же цветам как и выделенная строка закрашивает всю форму
Почему так?

Код:
procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
begin
  a:= DataSet.Recno;
end;
Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin

  if TDBGrid(Sender).DataSource.DataSet.RecNo = a  then  begin
   Brush.Color:=clHighlight;
   Font.Color:=clBlack;
   exit;
   end;

  with DBGrid1.Canvas do begin
  if TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1 then  begin
   Brush.Color:=clWhite;
   Font.Color:=clBlack;
  end else begin
   Brush.Color:=$00D2E8E8;
   Font.Color:=clBlack;
  end;
  FillRect(rect);
  TextOut(Rect.Left,Rect.Top,Field.AsString);
 end;
end;
S_007 вне форума Ответить с цитированием
Старый 13.05.2015, 09:33   #19
opencloser
Пользователь
 
Регистрация: 04.03.2014
Сообщений: 15
По умолчанию

Использовать стили отображения
opencloser вне форума Ответить с цитированием
Старый 13.05.2015, 09:36   #20
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Цитата:
Сообщение от opencloser Посмотреть сообщение
Использовать стили отображения
я не знаю как это сделать
S_007 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация много раз повторяющихся строк в DBGrid в Delphi Train-GT БД в Delphi 6 22.09.2014 07:38
дана строка состоящая из групп нулей и единиц. Подсчитать количества единиц в группах с нечетным количеством символов (на Delphi) ArturBattalov Помощь студентам 1 06.10.2013 16:16
Сортировка строк массива (по числам) cyt Помощь студентам 11 17.10.2010 22:50
И по поводу раскрашивание ячеек от даты Wasily Microsoft Office Excel 9 18.06.2008 08:38
Раскрашивание черно-белых изображений!!! ALEX_RAS Помощь студентам 1 16.05.2008 21:57