Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

Событие 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
15-1148345628
FireFox
2006-05-23 04:53
2006.06.18
Никто случайно не писал расширения к FireFox у ?


1-1147367029
hgd
2006-05-11 21:03
2006.06.18
Edit в чужом окне


4-1142851851
balepa
2006-03-20 13:50
2006.06.18
Socket and TIME_WAIT


1-1147112151
Fl@sh
2006-05-08 22:15
2006.06.18
из query в TMemorySream и обратно


1-1147412552
Chaser
2006-05-12 09:42
2006.06.18
Отображение иконок в TreeView