Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.01;
Скачать: CL | DM;

Вниз

покраска ячеек в гриде   Найти похожие ветки 

 
tima   (2009-09-11 21:49) [0]

Грид состоит из 25 фиксированных колонок(cols), строчки добавляются по мере работы программы.
Мне нужно красить ячейки. Причем только от 5 колонки до 9 включительно, другие вообще не рассматриваем. Так вот с 5 по 9 колонку, ячейки имеют такой примерно вид
1 2 3 4 5 (1)
2 3 4 5 12 (2)
3 4 5 12 9 (3)
3 4 5 12 9 (4)
4 5 12 9 7 (5)

также на форме есть эдит, в котором записано значение от 2 до 9.
это число означает что по достижению его значения одинаковых строчек , их нужно покрасить в другой цвет. Например в эдите число 2, значит если когда строчка (3) образуется то ничего не происходит, а когда образуется строчка (4), в точности такая же как и (3) то мы их закрашиваем. Если значение 5 в эдите, то мы ждем когда появиться 5 (или больше) подряд идущих одинаковых строчек и красим их!
Прошу помоч реализовать это, т.к. сам затрудняюсь :(

Ячейки крашу в drawcell грида:

     if (ACol >= 0) and (ARow >= 0) then
     begin
       Canvas.Brush.Color := $00C1C1FF;
       Canvas.FillRect(Rect);
       Canvas.TextOut(rect.left + 4, rect.top, S);
     end;

S текст в данной ячейке


 
oldman ©   (2009-09-11 22:05) [1]


> Грид состоит из 25 фиксированных колонок(cols), строчки
> добавляются по мере работы программы.



грабли номер раз!


> то мы ждем когда появиться 5 (или больше) подряд идущих
> одинаковых строчек и красим их!


Грабли номер два!
А если строчек действительно 5, а в гриде визуально видны только 3?
А если таких "наборов" несколько?


> Например в эдите число 2, значит если когда строчка (3)
> образуется то ничего не происходит, а когда образуется строчка
> (4), в точности такая же как и (3) то мы их закрашиваем.


Грабли номер 3!
Если строка (5) будет копией (4), то закрашивание нужно снять?


 
Сергей М. ©   (2009-09-11 22:07) [2]


> строчки добавляются по мере работы программы


"эдит" тоже меняется "по мере работы программы" ?


 
oldman ©   (2009-09-11 22:11) [3]

Насчет граблей номер раз:

Выставил ты в эдите число 2 и куришь.
А строки-то добавляются.
И ведь событие нужно какое-то для их обработки-раскрашивания, верно?
Причем, этих событий несколько, верно? (смена значения эдита, добавление строк, прокрутка грида etc.)


 
Сергей М. ©   (2009-09-11 22:16) [4]


> когда образуется строчка (4), в точности такая же как и
> (3) то мы их закрашиваем


А строчки (1) и (2), надо понимать, бесцветные остаются ? Прозрачно-невидимые ?)

Что-то какая-то томсойернозаборораскрасочная задачка)..


 
tima   (2009-09-11 22:24) [5]

1. Спасибо за ответы!
2.


> oldman

колонки и строчки - разные вещи!
колонки они же столбцы - вертикальные, строчки - горизонтальные.

Таких наборов может быть несколько. Число в эдите задается в начале работы программы и в дальнейшем не изменяется. Данное число является минимумом, если одинаковых подряд идущих строчек больше то они тоже красятся.
Вот еще пример ( в эдите число 3, значит красим только 3 подряд идущие одинаковые строчки):
1 2 3 4 5
2 3 4 5 8
3 4 5 8 2 красим
3 4 5 8 2 красим
3 4 5 8 2 красим
4 5 8 2 9
5 8 2 9 1 не красим
5 8 2 9 1 не красим
если следующая строчка будет такой же 5 8 2 9 1, тогда красим её и две предыдущие такие же.


 
tima   (2009-09-11 22:25) [6]


> Сергей М

1 и 2 строчки оставляем без окрашивания


 
Сергей М. ©   (2009-09-11 22:28) [7]


> 1 2 3 4 5 <- а ЭТА ? невидимая что ли ?
> 2 3 4 5 8 <- а ЭТА ? невидимая что ли ?
> 3 4 5 8 2 красим
> 3 4 5 8 2 красим
> 3 4 5 8 2 красим
> 4 5 8 2 9 <- а ЭТА ? невидимая что ли ?
> 5 8 2 9 1 не красим
> 5 8 2 9 1 не красим


 
Сергей М. ©   (2009-09-11 22:29) [8]


> 1 и 2 строчки оставляем без окрашивания


Как это так ?)
Сам-то понял что сказал ?)


 
Сергей М. ©   (2009-09-11 22:33) [9]


> 4 5 8 2 9 <- чем ЭТО с т.з. "окраски"
> 5 8 2 9 1 не красим <- отличается от ЭТОГО ?


 
Сергей М. ©   (2009-09-11 22:38) [10]


> Число в эдите задается в начале работы программы и в дальнейшем
> не изменяется


Ну и зачем тогда ты его упоминаешь ?
Это что, для решения задачи КРАЙНЕ важно, эдит у тебя там или хренедит ?

Откуда вообще у задачи растут ноги ? Из лабы что ли ?)


 
oldman ©   (2009-09-11 23:11) [11]


> tima  


Повторяю свой вопрос про визуализацию:
Как ты узнаешь, какие ячейки в данные момент отображаются на экране монитора и какие из них надо "красить"?

ЗЫ: Очень похоже на лабу...


 
oldman ©   (2009-09-12 09:28) [12]


> Прошу помоч реализовать это, т.к. сам затрудняюсь :(


А в чем проблема-то?
если строки только добавляются, алгоритм прост:

а - счетчик
b - заданное число повторений

добавилась первая строка
а=1
если добавилась новая строка
 если повторение с предыдущей
   а=а+1
 если нет
   а=1
 если а=b
   красим колонки в новой строке и равных ей предыдущих
 если a>b
   красим колонки в новой строке
конец если



Страницы: 1 вся ветка

Текущий архив: 2009.11.01;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
1-1222068508
Decoding
2008-09-22 11:28
2009.11.01
CPL


3-1228849414
Falcom
2008-12-09 22:03
2009.11.01
Подключиться к MySQL из Delphi через Internet?


15-1251928966
Kerk
2009-09-03 02:02
2009.11.01
Кеширование в nginx кто-нибудь настраивал?


2-1252648119
Гость
2009-09-11 09:48
2009.11.01
Объявление переменной


2-1252333617
Rembo
2009-09-07 18:26
2009.11.01
Многопоточный Indy (idHTTP)