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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2014, 16:57   #1
Jekasea
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 47
По умолчанию Закраска соседних ячеек StringGrid

У меня в StringGrid в первой колонке выводятся дни недели, а во второй числа месяца соответствующие этим дням.
Ячейки с ВОСКРЕСЕНЬЕМ закрашиваю красным
Код:
if TStringGrid(Sender).Cells[Acol,Arow]='воскресенье'  then begin
       Canvas.font.Color :=clBlack;
       Canvas.Brush.Color :=clRed;
       Canvas.FillRect( Rect );
       Canvas.TextOut(Rect.Left+5, Rect.Top+2, Cells[ACol, ARow]);   end;
Как мне раскрасить числа в соседней колонке соответствующие ВОСКРЕСЕНИЯМ то-же красным ?
Ведь ни какого условия не поставить.
Jekasea вне форума Ответить с цитированием
Старый 14.01.2014, 17:04   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Ведь ни какого условия не поставить
Прям не поставишь.
Код:
if ((Acol>0) and (Cells[Acol-1,Arow]='воскресенье')) or
   ((Acol<StringGrid.ColCount-1) and (Cells[Acol+1,Arow]='воскресенье')) then ...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2014, 17:16   #3
Jekasea
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 47
По умолчанию

Выдает ошибку на Acol<StringGrid.ColCount-1 - неизвестный идентификатор StringGrid
Jekasea вне форума Ответить с цитированием
Старый 14.01.2014, 17:17   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Откуда мне знать как грид ваш называется? Или имя вашего грида или TStringGrid(Sender)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.01.2014, 17:28   #5
Jekasea
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 47
По умолчанию

Именно так TStringGrid(Sender)
Jekasea вне форума Ответить с цитированием
Старый 14.01.2014, 17:47   #6
Jekasea
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 47
По умолчанию

Привожу мой код по раскраске полностью
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

 begin
  with  StringGrid1  do
 begin
  if TStringGrid(Sender).Cells[Acol,Arow]='  выходной' then begin
    Canvas.font.Color :=clRed;
    Canvas.Font.Style:=[fsBold, fsItalic];
    Canvas.FillRect( Rect );
    Canvas.TextOut(Rect.Left, Rect.Top+2, Cells[ACol, ARow]);   end;
     if ((Acol>0) and (Cells[Acol-1,Arow]='воскресенье')) or
   ((Acol<StringGrid1DrawCell.ColCount-1) and (Cells[Acol+1,Arow]='воскресенье')) then
        if TStringGrid(Sender).Cells[Acol,Arow]='суббота'  then begin
          Canvas.Brush.Color :=clRed;
          Canvas.FillRect( Rect );
          Canvas.TextOut(Rect.Left+5, Rect.Top+2, Cells[ACol, ARow]);   end;
             if TStringGrid(Sender).Cells[Acol,Arow]='Отработано'  then begin
               Canvas.Brush.Color :=clYellow;
               Canvas.FillRect( Rect );
               Canvas.TextOut(Rect.Left+5, Rect.Top+2, Cells[ACol, ARow]);   end;
         if TStringGrid(Sender).Cells[Acol,Arow]='   (ЧАСОВ)'  then begin
           Canvas.Brush.Color :=clYellow;
           Canvas.FillRect( Rect );
           Canvas.TextOut(Rect.Left+5, Rect.Top+2, Cells[ACol, ARow]);   end;

      if strtointdef(TStringGrid(Sender).Cells[Acol,Arow],0)>100  then begin
        Canvas.Brush.Color :=clYellow;
        Canvas.FillRect( Rect );
        Canvas.TextOut(Rect.Left+5, Rect.Top+2, Cells[Acol, Arow]);   end;
 end;
 end;
Jekasea вне форума Ответить с цитированием
Старый 14.01.2014, 17:51   #7
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Acol<StringGrid1DrawCell.ColCount-1
Неужели компилится?
northener вне форума Ответить с цитированием
Старый 14.01.2014, 17:53   #8
Jekasea
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 47
По умолчанию

в строке
Код:
(Acol<StringGrid1DrawCell.ColCount-1)
выдает ошибку Not enough actual parameters.
Jekasea вне форума Ответить с цитированием
Старый 14.01.2014, 17:55   #9
Jekasea
Пользователь
 
Регистрация: 03.05.2013
Сообщений: 47
По умолчанию

Какой параметр он просит???
Jekasea вне форума Ответить с цитированием
Старый 14.01.2014, 18:05   #10
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Цитата:
Сообщение от Jekasea Посмотреть сообщение
в строке
Код:
(Acol<StringGrid1DrawCell.ColCount-1)
выдает ошибку Not enough actual parameters.
Код:
(Acol<StringGrid1.ColCount-1)
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение пустых ячеек по содержанию соседних столбцов OlgaK Microsoft Office Excel 12 28.08.2013 18:29
Закраска в таблице StringGrid OSW Общие вопросы Delphi 3 23.04.2013 21:48
Выделение и закраска ячеек DrawGrid'a Прячущая Хвост Общие вопросы Delphi 2 20.02.2012 03:46
Закраска свободной от ячеек области в StringGrid Miller-1981 C++ Builder 4 29.08.2011 09:56
Делфи(закраска отедельных ячеек в стринг грид) zoza1 Помощь студентам 3 18.02.2010 08:17