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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2010, 15:35   #1
bbk_serg
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 62
Смущение TextRect работает неправильно

Здраствуйте!!

Мне нужно при определенном условии закрасить строку таблицы.
Я новичок поэтому может не все понимаю, посмотрите что не так.
Заранее спасибо!!!


Код:
procedure TForm1.DCC(Sender: TObject; const Rect: TRect; DataCol: Integer;
  Column: TColumn; State: TGridDrawState);
begin
  DBGrid2.Canvas.Font.Color := clBlack;
  DBGrid2.Canvas.Brush.Color := clMoneyGreen;
  DBGrid2.Canvas.FillRect(Rect);

if DBGrid2.DataSource.DataSet.FieldByName('Oplacheno').Value = 'ні' then
  DBGrid2.Canvas.TextRect(Rect,Left+2,Rect.Top+2,Column.Field.Text);
end;

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

Код:
procedure TForm1.DCC(Sender: TObject; const Rect: TRect; DataCol: Integer;
  Column: TColumn; State: TGridDrawState);
begin
 with DBGrid2.Canvas do begin
  Font.Color := clBlack;
  if DBGrid2.DataSource.DataSet.FieldByName('Oplacheno').Value = 'ні' then
   Brush.Color := clMoneyGreen else Brush.Color := clDefault;
  FillRect(Rect);
 TextRect(Rect,Left+2,Rect.Top+2,Column.Field.Text);
 end;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2010, 16:03   #3
bbk_serg
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 62
По умолчанию

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

А ошибся:
Код:
   else
    Brush.Color := clWhite;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2010, 17:43   #5
bbk_serg
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 62
По умолчанию

Исправил, но с текстом проблема осталась.
Вот как виглядит таблица:
[IMG]C:\Users\Minicooper\Documents\Img.j pg[/IMG]
bbk_serg вне форума Ответить с цитированием
Старый 24.06.2010, 18:16   #6
bbk_serg
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 62
По умолчанию

Исправил, но с текстом проблема осталась.
Вот как виглядит таблица:
Изображения
Тип файла: jpg Img.JPG (30.0 Кб, 76 просмотров)
bbk_serg вне форума Ответить с цитированием
Старый 25.06.2010, 14:35   #7
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

цвет шрифту задайте
Font.Color:= clBlack;


Звиняйте всё уже было..(и ведь у самого в подписи про внимательность)

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

Цитата:
но с текстом проблема осталась.
Какая проблема?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.06.2010, 08:50   #9
М_Виктор
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 49
По умолчанию

Цитата:
Сообщение от bbk_serg Посмотреть сообщение
Исправил, но с текстом проблема осталась.
Вот как виглядит таблица:
Может быть, Вам следует попробовать примерно так:
Код:
            with DBGridEh2.Canvas do
               begin
                  Brush.Color:=$00CECEFF; {здесь укажите нужный Вам цвет заливки}
                  FillRect(Rect);
                  Font.Color:=clWindowText;
                  if (Column.Field.DataType=ftString) or (Column.Field.DataType=ftDate)  then
                     TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text)
                  else
                  if (Column.Field.DataType=ftFloat) or
                     (Column.Field.DataType=ftAutoInc) or
                     (Column.Field.DataType=ftSmallint) or
                     (Column.Field.DataType=ftInteger) then
                     begin
                       if Column.Width>TextWidth(Column.Field.Text) then
                         TextOut(Rect.Right-TextWidth(Column.Field.Text)-2,Rect.Top+2,Column.Field.Text);
                     end;
               end
М_Виктор вне форума Ответить с цитированием
Старый 10.08.2010, 20:25   #10
bbk_serg
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 62
По умолчанию

Появилась другая проблема: на заливке нет текста.
bbk_serg вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
неправильно работает сортировка Brabus Помощь студентам 1 30.05.2010 14:25
sscanf() неправильно работает BioS Общие вопросы C/C++ 7 06.02.2010 22:36
Неправильно работает поиск Власов А.С. БД в Delphi 5 12.10.2009 05:59
Скрипт неправильно работает aleksa76 JavaScript, Ajax 4 21.05.2008 17:47
Запрос неправильно работает... yulia БД в Delphi 0 27.05.2007 20:41