C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: OnDrawCell  (Прочитано 3131 раз)
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


« : 07 Ноябрь 2012, 15:38:40 »

Как программно вызвать OnDrawCell StringGrid'а
Так не работает
StringGrid->OnDrawCell();
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


« Ответ #1 : 07 Ноябрь 2012, 16:27:24 »

У грида есть метод InvalidateCell. Правда, поскольку он protected, для доступа к нему надо будет воспользоваться известной техникой: создать фейковый класс-наследник TStringGrid, в котором будет доступен (поскольку protected доступен в потомках) этот метод, и вызывать: ((TFakeStringGrid*)StringGrid)->InvalidateCell(...)
Записан
Еxpert
Просто программст
Участник


Сказали спасибо: +21/-36
Offline

Сообщений: 490

DanUnited


« Ответ #2 : 07 Ноябрь 2012, 16:55:03 »

Странно что такой вариант без скобок у меня скомпилировался, возвращает void
Код
StringGrid1->OnDrawCell;
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


« Ответ #3 : 07 Ноябрь 2012, 17:07:34 »

А что он делает, не приходило в голову? Поразмысли, на досуге
Записан
Sergey1985
Участник


Сказали спасибо: +8/-1
Offline

Сообщений: 310


« Ответ #4 : 07 Ноябрь 2012, 18:06:26 »

И что же???
Записан
d7d1cd
Участник


Сказали спасибо: +59/-24
Offline

Сообщений: 1005


« Ответ #5 : 07 Ноябрь 2012, 18:48:35 »

И что же???

Видимо указывает на функцию DrawCell
Записан
OVE
Участник


Сказали спасибо: +67/-0
Offline

Сообщений: 72


« Ответ #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


« Ответ #7 : 08 Ноябрь 2012, 17:11:11 »

Вот объясните мне, я не понимаю логики. Есть специальный метод, для объявления ячейки невалидной, указывает системе, что ее надо перерисовать, и система делает то, что нужно делать, и тогда, когда это будет нужно (скажем, если ячейка, помеченная невалидной, будет на момент вызова InvalidateRect перекрыта чужим окном, то перерисована она будет только тогда, чужое окно откроет эту ячейку). Зачем "в лобовую" вызывать этот злосчастный метод OnDrawCell? Может, эта ячейка вообще невидима сейчас, к чему ее перерисовывать?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.085 секунд. Запросов: 20.