Форум: "Начинающим";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];
Внизпокраска ячеек в гриде Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c