Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1252662126
mora
2009-09-11 13:42
2009.11.01
Как сохранить картинку из базы Paradox в файл


2-1252392985
kostyl_kostyl
2009-09-08 10:56
2009.11.01
Как добиться прозрачности TScrollBox


1-1222269356
@!!ex
2008-09-24 19:15
2009.11.01
Какие есть способы определения, нажата клавиша или нет?


2-1252165263
PIROTEX777
2009-09-05 19:41
2009.11.01
ошибка в данных CRC


2-1253088223
Johnnnn
2009-09-16 12:03
2009.11.01
ShellExecute как узнать когда закончено выполнение?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский