Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.05.2009, 20:03
ytkopobot ytkopobot вне форума
Прохожий
 
Регистрация: 20.04.2009
Сообщения: 4
Репутация: 10
Смущение DBGrid - цветная строка. как?

Хочу, чтобы при выборе в DBGrid выделялась не отдельная ячейка, а вся строка. Каким-нибудь цветом... Кажется, что не сложно, но не пойму как

Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect:TRect; Field: TField; State: TGridDrawState);
begin
if gdFocused in State then
with (Sender as TDBGrid).Canvas do
begin
Brush.Color := clRed;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, Field.AsString);
end;
end;
Admin: Пользуемся тегами!

КОгда использую эту процедуру пишет что, Undeclared identifier: 'TField'

Последний раз редактировалось Admin, 15.05.2009 в 20:26.
Ответить с цитированием
  #2  
Старый 15.05.2009, 20:59
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Переводим: Не определён идентификатор: 'TField'
Смотрим: первая же строка:
Код:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect:TRect;
Field: TField; State: TGridDrawState);
...
Думаем:
Напортачил с Юзесами. Вероятно, нет какого-то модуля, где и описан этот TField. Где и что забыл - по такому кусочку понять сложно. Но куда копать я вроде ясно разъяснил.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 15.05.2009, 21:11
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Вместо
TextOut
лучше (кроме частных случаев) использовать
DBGridl.DefaultDrawDataCell(Rect, Field, State);
Ответить с цитированием
  #4  
Старый 15.05.2009, 21:13
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Реальный фрагмент :
Код:
procedure TForm1.DBGrid_WellDrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
Var
  Yes : integer;

begin
  Yes :=0;
  with DBGrid_Well.Canvas do
    begin
      if (not (gdFocused in State)) then begin
         if Query_WellITS_DUBIOUS.AsInteger>0 then begin
            Brush.Color:=clYellow;
            Yes :=1;
         end;
         if Yes>0 then begin
            FillRect(Rect);
            DBGrid_Well.DefaultDrawDataCell(Rect, Field, State);
         end;
      end;
  end;
end;
Ответить с цитированием
  #5  
Старый 15.05.2009, 21:27
ytkopobot ytkopobot вне форума
Прохожий
 
Регистрация: 20.04.2009
Сообщения: 4
Репутация: 10
По умолчанию

а что такое Query_WellITS_DUBIOUS.AsInteger ?
Ответить с цитированием
  #6  
Старый 15.05.2009, 21:31
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Цитата:
Сообщение от ytkopobot
а что такое Query_WellITS_DUBIOUS.AsInteger ?

Это объект TField.
Можно и так :
Query_Well.FieldByName('ITS_DUBIOUS').AsInteger

В Вашем случае (если Вы не хотите выделять строку по условию) - это можно упустить.
Ответить с цитированием
  #7  
Старый 15.05.2009, 21:43
ytkopobot ytkopobot вне форума
Прохожий
 
Регистрация: 20.04.2009
Сообщения: 4
Репутация: 10
По умолчанию

никакого условия нет, надо выделять просто мышью, но не получается
Ответить с цитированием
  #8  
Старый 15.05.2009, 22:18
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

В Вашем вопросе не было упоминания о мыши (или я не прав?).
Формулируйте вопросы точнее.
Ответить с цитированием
  #9  
Старый 15.05.2009, 22:32
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Код:
...
DBGrid.Options:=DBGrid.Options+[dgRowSelected];
...
...

procedure TDlg_SysCalend.DBGrid_CDrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
begin
  with DBGrid.Canvas do
    begin
      if (gdSelected in State) then begin
         Brush.Color:=clYellow;
         Font.Color:=clBlack;
         FillRect(Rect);
         DBGrid_C.DefaultDrawDataCell(Rect, Field, State);
      end;
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter