Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1148383916
Ламот
2006-05-23 15:31
2006.06.18
Помогите пож. с теорией!


15-1148759873
oleg_sys
2006-05-27 23:57
2006.06.18
IFO Specification


2-1148801732
Хочу_все_знать
2006-05-28 11:35
2006.06.18
Вопрос к Мастерам !


9-1130206311
JUS
2005-10-25 06:11
2006.06.18
Зацените мою демку


2-1149072620
adalx
2006-05-31 14:50
2006.06.18
Помогите новичку





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский