C++Builder
Начало
Форум
Помощь
Войти
Регистрация
C++Builder
>
Forum
>
Вопросы программирования
>
Общие вопросы программирования в C++Builder
>
OnDrawCell
Страниц: [
1
]
Вниз
Печать
Автор
Тема: OnDrawCell (Прочитано 3223 раз)
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
OnDrawCell
«
:
07 Ноябрь 2012, 15:38:40 »
Как программно вызвать OnDrawCell StringGrid'а
Так не работает
StringGrid->OnDrawCell();
Записан
volvo877
Глобальный модератор
Сказали спасибо: +736/-1
Offline
Сообщений: 891
Re: OnDrawCell
«
Ответ #1 :
07 Ноябрь 2012, 16:27:24 »
У грида есть метод InvalidateCell. Правда, поскольку он protected, для доступа к нему надо будет воспользоваться известной техникой: создать фейковый класс-наследник TStringGrid, в котором будет доступен (поскольку protected доступен в потомках) этот метод, и вызывать: ((TFakeStringGrid*)StringGrid)->InvalidateCell(...)
Записан
Еxpert
Просто программст
Участник
Сказали спасибо: +21/-36
Offline
Сообщений: 490
DanUnited
Re: OnDrawCell
«
Ответ #2 :
07 Ноябрь 2012, 16:55:03 »
Странно что такой вариант без скобок у меня скомпилировался, возвращает void
Код
StringGrid1
-
>
OnDrawCell
;
Записан
volvo877
Глобальный модератор
Сказали спасибо: +736/-1
Offline
Сообщений: 891
Re: OnDrawCell
«
Ответ #3 :
07 Ноябрь 2012, 17:07:34 »
А что он делает, не приходило в голову? Поразмысли, на досуге
Записан
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Re: OnDrawCell
«
Ответ #4 :
07 Ноябрь 2012, 18:06:26 »
И что же???
Записан
d7d1cd
Участник
Сказали спасибо: +59/-24
Offline
Сообщений: 1005
Re: OnDrawCell
«
Ответ #5 :
07 Ноябрь 2012, 18:48:35 »
Цитата: Sergey1985 от 07 Ноябрь 2012, 18:06:26
И что же???
Видимо указывает на функцию DrawCell
Записан
OVE
Участник
Сказали спасибо: +67/-0
Offline
Сообщений: 72
Re: OnDrawCell
«
Ответ #6 :
08 Ноябрь 2012, 16:08:31 »
а если так?
Код:
int ACol=3, ARow=4;
TRect r=StringGrid1->CellRect(ACol,ARow);
TGridDrawState st;
if(StringGrid1->OnDrawCell)
StringGrid1->OnDrawCell((TObject*)StringGrid1,ACol,ARow,r,st);
Записан
volvo877
Глобальный модератор
Сказали спасибо: +736/-1
Offline
Сообщений: 891
Re: OnDrawCell
«
Ответ #7 :
08 Ноябрь 2012, 17:11:11 »
Вот объясните мне, я не понимаю логики. Есть специальный метод, для объявления ячейки невалидной, указывает системе, что ее надо перерисовать, и система делает то, что нужно делать, и
тогда, когда это будет нужно
(скажем, если ячейка, помеченная невалидной, будет на момент вызова InvalidateRect перекрыта чужим окном, то перерисована она будет только тогда, чужое окно откроет эту ячейку). Зачем "в лобовую" вызывать этот злосчастный метод OnDrawCell? Может, эта ячейка вообще невидима сейчас, к чему ее перерисовывать?
Записан
Страниц: [
1
]
Вверх
Печать
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Вопросы программирования
-----------------------------
=> Общие вопросы программирования в C++Builder
=> Программирование с FMX
=> Работа с базами данных в C++Builder
=> Windows API
=> Технологии COM/DCOM, ActiveX
=> Аспекты и идеология профессиональной разработки ПО
=> Компьютерное железо и системное администрирование
=> студенческий городок
-----------------------------
Обсуждение материалов на сайте
-----------------------------
=> Обсуждений статей на сайте
=> Обсуждение материалов из файлового архива
=> Компоненты сторонних разработчиков к С++Builder
-----------------------------
Работа сайта и новости
-----------------------------
=> Ищу/предлагаю работу
=> Новости из мира программирования
=> Новости - события календаря
=> Голосования
=> Компьютерный юмор и приколы
=> Работа сайта
=> Флейм
-----------------------------
FAQ - частозадаваемые вопросы/ответы
-----------------------------
=> FAQ, общие вопросы, посвящённые C++Builder
=> FAQ, вопросы по базам данных
=> FAQ, вопросы по компонентам
Загружается...