Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли разукрашивать StringGrid в событии отличном от DrawCell? [D7, WinXP]


Страницы:   1 2 3

Zheksik ©   (2007-12-07 11:18:00) 

Здравствуйте. Проблема в том, что после обработки и получения табличных результатов нужно выделить максимальный элемент в каждом столбце. Я знаю как выделяется ячейка с помощью события DrawCell, но оно мне не подходит, т.к. оно происходит в момент прорисовки таблицы, а мне нужно, чтобы после полного построения таблицы.


{RASkov}   (2007-12-07 13:34:00) [41]

> [7] Zheksik ©   (07.12.07 13:20)
> MaxArray(ACol)

Скобки не массивные :) надо []


Zheksik   (2007-12-07 13:30:00) [42]

что значит, "где-то в областях видимости"???

единственное место где используется этот массив - это процедура где он наполняется значениями... Процедура простая... просто перебор всех значений таблицы и наполнение массива. Объявлен массив в привате.

Где "копать"?


Сергей М.   (2007-12-07 13:23:00) [43]

Чудес не бывает - где-то в областях видимости, доступных этому методу, идентификатор "MaxArray" уже определен и определен иным образом.


Zheksik   (2007-12-07 13:20:00) [44]

хм... вот и не верь после этого в чудеса...


 private
   MaxArray: array[1..16] of Integer;

procedure TForm1.AdvStringGrid1DrawCell(Sender: TObject; ACol,
 ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
if MaxArray(ACol) = ARow then AdvStringGrid1.Canvas.Brush.color := clRed;
end;


на ACol выдаёт - Missing operator or semicolon


Сергей М.   (2007-12-07 13:04:00) [45]


> for здесь нельзя использовать


А нафига он там нужен ?

if MyArray(ACol) = ARow then .. выделяем ...


@!!ex   (2007-12-07 13:03:00) [46]

> [4] Zheksik ©   (07.12.07 13:00)

Зачем for???
StringGrid сам переберет все элементы.
ACol и ARow дают тебе индексы нужно элемента массива!


Zheksik   (2007-12-07 13:00:00) [47]

бррррр, запутался...

Сергей М. ©
создал массив по вашему совету, где индекс элемента соответствует колонке, а значение ряду, но как в OnDrawCell правильно использовать этот массив??? Ведь for здесь нельзя использовать(((


Zheksik   (2007-12-07 11:43:00) [48]

{RASkov}
это уже что-то... спасибо. буду пробовать...

to Сергей М. ©   (07.12.07 11:37) [2]
как вариант... спасибо.


Сергей М.   (2007-12-07 11:37:00) [49]


> оно мне не подходит


Оч даже подходит.

После построения таблицы создаешь ц/ч массив размером, равным числу столбцов. В цикле по всем столбцам для каждого столбца определяешь номер строки максимального эл-та в этом сторбце, полученный номер записываешь в соотв. элемент массива.

Теперь в обработчике OnDrawCell параметр ACol рассматриваешь как индекс эл-та массива, берешь из него хранимый в нем номер строки, сравниваешь с ARow, если равны, то выделяешь.


{RASkov}   (2007-12-07 11:36:00) [50]

> [0] Zheksik ©   (07.12.07 11:18)

Не верно мыслишь....
Рисовать грид нужно именно в OnDrawCell, а вот перерисовать его весь можно вызовом Invalidate....


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо