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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2012, 07:47   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Incompatible types: 'DBGridEh.TGridDrawState' and 'Unit1.TGridDrawState'

Доброе утро! Перестал работать ранее рабочий код. В старых проектах он работал. Подозреваю, что это из-за того, что я обновил версию Ehlib до версии 5.6. Но как исправить эту ошибку:
Код:
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var
  holdColor: TColor;
begin
 holdColor := DBGridEh1.Canvas.Brush.Color;
 if Form1.pFIBDataSet1.FieldByName('POL').AsString = 'мужской' then
 begin
  DBGridEh1.Canvas.Brush.Color := clInfoBk;
  DBGridEh1.Canvas.Font.Color := clBlack;
  DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  DBGridEh1.Canvas.Brush.Color := holdColor;
 end;
 if Form1.pFIBDataSet1.FieldByName('POL').AsString = 'женский' then
 begin
  DBGridEh1.Canvas.Brush.Color := clSkyBlue;
  DBGridEh1.Canvas.Font.Color := clBlack;
  DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  DBGridEh1.Canvas.Brush.Color := holdColor;
 end;
end;
?
Выдает ошибку на выделенных строках.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.04.2012, 08:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ошибку интересно какую выдает? Я использую это событие только для прорисовки смайликов, а для изменения фонта и цвета текста и фона - OnGetCellParams
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.04.2012, 08:56   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ошибку выдает ту, которую я указал в заголовке темы. Ну хорошо. А как через OnGetCellParams сделать изменение цвета фона строки как надо мне, по условию?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 28.04.2012 в 09:00.
artemavd вне форума Ответить с цитированием
Старый 28.04.2012, 10:00   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В этой процедуре фон выделенной ячейки не меняется если грид в фокусе, иначе серым. Фон остальных ячеек делается желтым для помеченных строк, иначе не меняется
Код:
procedure TFMDIChild.DBGridEhGetCellParams(Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; State: TGridDrawState);
begin
  if gdSelected in State then begin
    if not TDBGridEh(Sender).Focused then Background:=clBtnFace;
    Exit;
  end;
  if (TDBGridEh(Sender).DataSource.DataSet.FindField(sdFIELD_METKA)<>nil) and
     (TDBGridEh(Sender).DataSource.DataSet.FieldByName(sdFIELD_METKA).AsString=sdMETKA) then Background:=clYellow;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.04.2012, 10:04   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Хм...да раньше, даже в старом проекте, скомпилированной у уже обновленными компонентами Ehlib до 5.6, работает код, который я привел в посте №1. Программа компилируется и запускается. А в текущем не хочу компилировать и выдает ошибку из заголовка темы. Что вообще значит эта ошибка? Какие типы не совместимы и можно ли ее побороть как-то, чтобы программа запускалась. Код скопировал полностью и старого, рабочего, проекта.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.04.2012, 10:07   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Посмотри, может это оно
http://www.sql.ru/forum/actualthread.aspx?tid=885254
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.04.2012, 10:22   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Аватар, спасибо, коллега! . Сделал как там написано и все заработало. Плюс тебе за помощь, если получится добавить! . Тема закрыта.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Error] Unit1.pas(40): Incompatible types: 'Integer' and 'Extended BETONOMESHALKA Общие вопросы Delphi 9 15.03.2014 17:26
Incompatible types MetR Помощь студентам 4 22.12.2011 18:31
incompatible types: 'Unit1.mas' and 'Unit2.mas' Александра_69 Общие вопросы Delphi 5 02.11.2011 01:43
[Pascal Error] Unit1.pas(101): E2008 Incompatible types Rin Мультимедиа в Delphi 5 17.05.2010 12:31
Incompatible types: 'Unit1.TWebBrowser' and 'SHDocVw.TWebBrowser' simon15x Общие вопросы Delphi 0 10.04.2010 03:11