![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли разукрашивать StringGrid в событии отличном от DrawCell? [D7, WinXP]
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....