Главная страница
    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.015 c
15-1148369229
Kolan
2006-05-23 11:27
2006.06.18
Помогите дать определение "Интерфейс"


15-1148230125
RUNaum
2006-05-21 20:48
2006.06.18
psql и че-то не допирает...


4-1143014316
EgorovAlex
2006-03-22 10:58
2006.06.18
Как улучшить поиск в LDAP? Есть такая конструкция, которая


3-1145887884
Квэнди
2006-04-24 18:11
2006.06.18
Dbexpress Delphi 2006


2-1149241925
XoXoL
2006-06-02 13:52
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский