Форум: "Основная";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
ВнизСобытие OnDrawCell у TStringGrid Найти похожие ветки
← →
QuickFinder (2006-05-09 01:52) [0]Как часто генерируется данное событие?
Дело в том, что в обработке события OnDrawCell я пишу текст в ячейках - на основе данных, которые динамически меняются.
← →
Плохиш © (2006-05-09 01:57) [1]
> QuickFinder (09.05.06 01:52)
> Как часто генерируется данное событие?
Тогда, когда система посчитает, что грид нужно перерисовать, например, если часть грида была закрыта другим окном.
Попросить систему о перерисовке грида можно вызовом метода Repaint.
← →
QuickFinder (2006-05-09 20:26) [2]Repaint не помогает, грид не обновляется.
Пока не переключишься на другое приложение и не вернешься обратно, значения в ячейках старые и необновленные.
Как решить проблему?
← →
Leonid Troyanovsky © (2006-05-09 20:29) [3]
> QuickFinder (09.05.06 20:26) [2]
> Как решить проблему?
Invalidate.
Хотя, конечно, это без большой разницы.
--
Regards, LVT.
← →
QuickFinder (2006-05-09 21:23) [4]Invalidate тоже не помогает. Грид не обновляется, пока не переключиться и вернуться в исходное приложение.
← →
KilkennyCat © (2006-05-09 21:38) [5]Вызвать OnDrawCell
← →
Leonid Troyanovsky © (2006-05-10 00:07) [6]
> QuickFinder (09.05.06 21:23) [4]
> Invalidate тоже не помогает. Грид не обновляется, пока не
Что-то ты недоговариваешь.
--
Regards, LVT.
← →
Германн © (2006-05-10 02:18) [7]
> Leonid Troyanovsky © (10.05.06 00:07) [6]
>
>
> > QuickFinder (09.05.06 21:23) [4]
>
> > Invalidate тоже не помогает. Грид не обновляется, пока
> не
>
>
> Что-то ты недоговариваешь.
>
> --
> Regards, LVT.
>
Код в студию! Сорри за "избитое выражение". :(
← →
Leonid Troyanovsky © (2006-05-10 21:05) [8]
> Германн © (10.05.06 02:18) [7]
> > Что-то ты недоговариваешь.
> Код в студию! Сорри за "избитое выражение". :(
Кто кого должен sorry - в студию.
Извините за выражение.
--
Regards, LVT.
← →
ЮЮ © (2006-05-11 02:58) [9]
> в обработке события OnDrawCell я пишу текст в ячейках -
> на основе данных, которые динамически меняются
В OnDrawCell они должны только перерисовываться, а не вычисляться. Перерасчеты вынеси в отдельный метод и вызывай когда надо, хоть в таймере. И вот когда изменится Cell[i, j] тогда и произойдет OnDrawCell
← →
Юрий Зотов © (2006-05-11 09:37) [10]> ЮЮ © (11.05.06 02:58) [9]
> В OnDrawCell они должны только перерисовываться, а не вычисляться.
?????????
Почему?
← →
Anatoly Podgoretsky © (2006-05-11 09:52) [11]Юрий Зотов © (11.05.06 09:37) [10]
Для разделения функций. Конечно не запрещено, но лучше отображение отделять от логики. Вроде и ты сам за подобное не раз ратовал. Правда не стоило так категорично - должны. Просто вспомним русскую поговорку, должен, но не обязан.
← →
ЮЮ © (2006-05-11 09:55) [12]>Почему?
Что заставляет перерисовываться ячеку StringGrid-а (перерекрытие другими окнами и изменение выделения ячейки нe в счет, ибо мы хотим реакции на программные вычисления, а не действия пользователя) и выполнить OnDrawCell? Изменение Cell . А его ты мы и намеряны изменить в OnDrawCell.
← →
ЮЮ © (2006-05-11 09:57) [13]Это все равно, что в вычислимом поле, например использовать состояние чекбокса на форме и надеяться на перевычисление поля после изменения состояния чекбокса.
← →
Юрий Зотов © (2006-05-11 11:47) [14]> Anatoly Podgoretsky © (11.05.06 09:52) [11]
Вот именно - должен, но не обязан. С точки зрения грамотного проектирования разделение функций, конечно, приветствуется (особенно, когда возможны потомки класса - объявляем методы виртуальными или динамическими и получаем гибкость) - но не столь же категорично?
> ЮЮ © (11.05.06 09:55) [12]
> А его ты мы и намеряны изменить в OnDrawCell.
Не обязательно именно его.
В вопросе сказано "я пишу текст в ячейках - на основе данных, которые динамически меняются". Такими данными могут быть, например, цвета, шрифт, какие-то иконки, отступы... в общем, любые атрибуты текста - но совершенно не обязательно сам текст.
И тогда эти данные вполне можно вычислять в самом обработчике OnDrawCell, непосредственно перед рисованием.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c