![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
покраска ячеек в гриде
tima © (2009-09-11 21:49:00)Грид состоит из 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-12 09:28:00) [1]
> Прошу помоч реализовать это, т.к. сам затрудняюсь :(
А в чем проблема-то?
если строки только добавляются, алгоритм прост:
а - счетчик
b - заданное число повторений
добавилась первая строка
а=1
если добавилась новая строка
если повторение с предыдущей
а=а+1
если нет
а=1
если а=b
красим колонки в новой строке и равных ей предыдущих
если a>b
красим колонки в новой строке
конец если
oldman (2009-09-11 23:11:00) [2]
> tima
Повторяю свой вопрос про визуализацию:
Как ты узнаешь, какие ячейки в данные момент отображаются на экране монитора и какие из них надо "красить"?
ЗЫ: Очень похоже на лабу...
Сергей М. (2009-09-11 22:38:00) [3]
> Число в эдите задается в начале работы программы и в дальнейшем
> не изменяется
Ну и зачем тогда ты его упоминаешь ?
Это что, для решения задачи КРАЙНЕ важно, эдит у тебя там или хренедит ?
Откуда вообще у задачи растут ноги ? Из лабы что ли ?)
Сергей М. (2009-09-11 22:33:00) [4]
> 4 5 8 2 9 <- чем ЭТО с т.з. "окраски"
> 5 8 2 9 1 не красим <- отличается от ЭТОГО ?
Сергей М. (2009-09-11 22:29:00) [5]
> 1 и 2 строчки оставляем без окрашивания
Как это так ?)
Сам-то понял что сказал ?)
Сергей М. (2009-09-11 22:28:00) [6]
> 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 не красим
tima (2009-09-11 22:25:00) [7]
> Сергей М
1 и 2 строчки оставляем без окрашивания
tima (2009-09-11 22:24:00) [8]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, тогда красим её и две предыдущие такие же.
Сергей М. (2009-09-11 22:16:00) [9]
> когда образуется строчка (4), в точности такая же как и
> (3) то мы их закрашиваем
А строчки (1) и (2), надо понимать, бесцветные остаются ? Прозрачно-невидимые ?)
Что-то какая-то томсойернозаборораскрасочная задачка)..
oldman (2009-09-11 22:11:00) [10]Насчет граблей номер раз:
Выставил ты в эдите число 2 и куришь.
А строки-то добавляются.
И ведь событие нужно какое-то для их обработки-раскрашивания, верно?
Причем, этих событий несколько, верно? (смена значения эдита, добавление строк, прокрутка грида etc.)
Сергей М. (2009-09-11 22:07:00) [11]
> строчки добавляются по мере работы программы
"эдит" тоже меняется "по мере работы программы" ?
oldman (2009-09-11 22:05:00) [12]
> Грид состоит из 25 фиксированных колонок(cols), строчки
> добавляются по мере работы программы.
грабли номер раз!
> то мы ждем когда появиться 5 (или больше) подряд идущих
> одинаковых строчек и красим их!
Грабли номер два!
А если строчек действительно 5, а в гриде визуально видны только 3?
А если таких "наборов" несколько?
> Например в эдите число 2, значит если когда строчка (3)
> образуется то ничего не происходит, а когда образуется строчка
> (4), в точности такая же как и (3) то мы их закрашиваем.
Грабли номер 3!
Если строка (5) будет копией (4), то закрашивание нужно снять?