Главная страница
    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.012 c
1-1147412552
Chaser
2006-05-12 09:42
2006.06.18
Отображение иконок в TreeView


2-1148990281
Setor
2006-05-30 15:58
2006.06.18
Как связать переменную с опр. кнопкой, зная Name этой кнопки?


3-1145378453
linx
2006-04-18 20:40
2006.06.18
"cannot attach to password database"


2-1149285805
mr1Andersen
2006-06-03 02:03
2006.06.18
Как сделать с помощью Delphi5 действие: Пуск-Выполнить ?


15-1148454022
Sergey13
2006-05-24 11:00
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский