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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2010, 20:05   #11
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Может так?: if (ACol <> 2)
Откуда ACol2 взялося?))
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 14.09.2010, 20:09   #12
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Ну да. Просто накладываем условия на координаты ячеек, например, так
Код:
procedure TForm1.RzStringGrid2DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
 c, q: integer;
 k: double;
begin
  if (ARow < 1) or (RzStringGrid2.Cells[ACol, ARow] = '') then exit;
  RzStringGrid2.canvas.brush.Color := clWhite;

  val(RzStringGrid2.Cells[ACol, ARow], k, q);
  if q <> 0 then begin//если ошибка
    if ACol = 1 then//цвет для первого столбца
      RzStringGrid2.Canvas.Brush.color := clRed;
    if ACol = 2 then//для второго
      RzStringGrid2.Canvas.Brush.color := clGreen;
    RzStringGrid2.canvas.fillRect(Rect);
    RzStringGrid2.canvas.TextOut(Rect.Left,Rect.Top,RzStringGrid2.Cells[ACol,ARow]);
  end;
end;
eoln вне форума Ответить с цитированием
Старый 14.09.2010, 20:24   #13
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Все, спасибо понял). А такой, немного левый вопрос. Возможно ли организовать по нажатию какой-либо клавиши переход от одной закрашенной ячейки к другой?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 14.09.2010, 20:39   #14
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Ну, наверное, если только завести массив в котором будут хранится координаты "неправильных" ячеек.
eoln вне форума Ответить с цитированием
Старый 15.09.2010, 09:16   #15
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

А условие проверки цвета ячейки нельзя записать? Что-то типа:
Код:
 if Form1.RzStringGrid1.Color = clRed then 
 begin
  ???
 end;
и как сделать поиск "не белых" ячеек в StringGrid по нажатию на клавишу, чтобы происходил поиск?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.09.2010, 13:29   #16
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Кстати, проверку на фиксированные строки FixedRows, лучше делать так:
Код:
if (ARow < RzStringGrid2.FixedRows) or (RzStringGrid2.Cells[ACol, ARow] = '') then exit;
Проверку на цвет можно так организовать:
Код:
if RzStringGrid2.Canvas.Pixels[RzStringGrid2.CellRect[ACol, ARow].left + 1, RzStringGrid2.CellRect[ACol, ARow].Top + 1] = clRed then
_Engine_ вне форума Ответить с цитированием
Старый 15.09.2010, 17:34   #17
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

О, спасибо! Я вот пытаюсь сделать, чтобы по нажатию на Enter происходила проверка:
Код:
procedure TForm1.RzStringGrid2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
 ACol,ARow: integer;
begin
 if Key = 13 then
 begin
  if RzStringGrid2.Canvas.Pixels[RzStringGrid2.CellRect[ACol, ARow].left + 1,
                                 RzStringGrid2.CellRect[ACol, ARow].Top + 1]
                                 = clRed then
  begin
   ShowMessage('Есть красные ячейки!');
  end;
end;
но компилятор ругается и говорит: "[Error] Unit1.pas(1654): Not enough actual parameters". А какие еще параметры надо ему?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.09.2010, 18:31   #18
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Эм... Какой-то, извиняюсь, варварский способ.....
А если окно перекрыто другим? Или свёрнуто? Или не всё ячейки отображаются (скроллбары)?

Сделать массив (возможно даже добавить как поле класса) и хранить информацию в нём...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 15.09.2010, 18:58   #19
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Цитата:
А если окно перекрыто другим? Или свёрнуто? Или не всё ячейки отображаются (скроллбары)?
В смысле? Что значит "перекрыто другим" и "свернуто"?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.09.2010, 19:04   #20
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Видимо DomiNick намекает, на то, что в этот момент не все ячейки будут отрисовываться и проверка через канвас может дать неверный ответ.
Он предлагает при закрашивании запоминать цвета, тут в принципе даже новое поле у грида не надо создавать, цвета можно запоминать в StringGrid.Rows[ARow].Objects[ACol]
_Engine_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа проверки вывода символов и цвета на принтер Absolut Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 13.09.2010 12:43
Проверить наличие eng символов? alco84 Microsoft Office Access 4 08.04.2010 11:08
программа нахождения и проверки символов/строк MixanMM Общие вопросы Delphi 14 09.07.2009 08:44
Не работает функция проверки подстроки в строке Cold_Night Помощь студентам 1 25.03.2009 01:30
Код проверки столкновений не работает. Манжосов Денис :) Общие вопросы Delphi 8 02.02.2009 10:31