Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.31;
Скачать: CL | DM;

Вниз

Ячейки DrawGrid   Найти похожие ветки 

 
Checist [root]   (2003-07-17 11:56) [0]

1) Как мне проверить свободна ли ячейка (2,1) в DrawGrid1 при нажатии Button1 (в смысле - в ячейке нет картинки)
2) Как мне очистить заполненную ячейку (2,1) в DrawGrid1 при нажатии Button2


 
Skier ©   (2003-07-17 11:59) [1]

Checist [root] (17.07.03 11:56)
1) Никак
2) Перерисовать, учитывая какие-то (тебе решать...) флаги


 
Checist [root]   (2003-07-17 12:01) [2]

В смысле, как перерисовать ?


 
Skier ©   (2003-07-17 12:02) [3]

>Checist [root] (17.07.03 12:01)
см. OnDrawCell


 
ЮЮ ©   (2003-07-17 12:03) [4]

в DrawGrid ничего нет. Он должен работать с некой структурой в памяти, определяющей данные для отрисовки каждой ячейки, и рисовать в обработчике onDrawCell. Вот эту информацию и можно использовать "при нажатии Button". Её же и следует изменять, заставляя перерысовываться "измененную ячейку": InvalidateCell


 
Checist [root]   (2003-07-17 12:05) [5]

Ну хорошо. Допустим, это понятно. Ты имеешь в виду закрасить ячейку цветом фона, но это пожирает дохрена ресурсов если - я в цикле обрабатываю 20 ячеек. Можно просто уничтожить холст ячейки с картинкой и на его место создать новый, пустой?


 
Skier ©   (2003-07-17 12:07) [6]

>Checist [root] (17.07.03 12:05)
У ячейки нет холста


> Ты имеешь в виду закрасить ячейку цветом фона, но это пожирает
> дохрена ресурсов

Не пожирает.


 
Checist [root]   (2003-07-17 12:09) [7]

Ладно верю, как это сделать?
Хотя у меня P3, а при закраске 20 ячеек картинками я ощущал легкое торможение - напрягает !!!


 
ЮЮ ©   (2003-07-17 12:18) [8]

>я в цикле обрабатываю 20 ячеек
Это как:
http://delphimaster.net/view/1-1058359954/

:-) Сколько можно повторять:
1) "Никаких циклов". В обработчике OnDrawCell отрисовывается только одна ячейка.
2) При необходимости перерисовать ячейку вызывается InvalidateCell


 
Checist [root]   (2003-07-17 12:18) [9]

Подскажите код, плиз!


 
Skier ©   (2003-07-17 12:20) [10]

>Checist [root] (17.07.03 12:18)
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988625107&n=21


 
Checist [root]   (2003-07-17 12:23) [11]

Кстати эта шняга вполне работает.
Но нужна еще одна процедура - очищающая ячейки, по тому же самому алгоритму. Мне именно нужен соурс очищающий определенную ячейку и все!


 
Checist [root]   (2003-07-17 12:26) [12]

Тот соурс тоже вполне понятен, но он загружает в ячейку битмап, а мне нужно наоборот - очищать.
Метод, типа вставить туда солид битмап цвета фона слишком грузен.


 
ЮЮ ©   (2003-07-17 12:27) [13]

Да не может это работать! Помести во время работы твоей программы другую форму, а затем убери - и обрадуйся увиденному :-)


 
ЮЮ ©   (2003-07-17 12:30) [14]

if <надо нарисовать картинку> then
Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic)
else
FillRect(Rect)


 
Checist [root]   (2003-07-17 12:30) [15]

Да это я знал. Но мне это не важно. У меня форма StayOnTop и SystemDialog


 
Skier ©   (2003-07-17 12:33) [16]

>Checist [root] (17.07.03 12:30)

> Да это я знал. Но мне это не важно.


:))

"Мораль легко уразуметь - "
" Зачем на бал пришёл медведь ?"


 
Checist [root]   (2003-07-17 12:36) [17]

FillRect(Rect) - грубо говоря, очищает ячейку?
А которую или все?


 
Skier ©   (2003-07-17 12:37) [18]

>Checist [root] (17.07.03 12:36)
Очищает ту, которая перерисовывается в данный момент.


 
ЮЮ ©   (2003-07-17 12:38) [19]

Ту, которую ты в данный момент отрисовываешь в DrawGrid.onDrawCell

TDrawCellEvent = procedure (Sender: TObject; ACol, ARow: Longint; Rect: TRect; State: TGridDrawState)


 
Checist [root]   (2003-07-17 12:40) [20]

> Skier - это я ЮЮ по поводу отсутствия перересовки.
Смешно получилось :)



Страницы: 1 вся ветка

Текущий архив: 2003.07.31;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
1-100709
GSergei
2003-07-18 14:53
2003.07.31
Запущена ли служба?


14-100963
Orion2
2003-07-15 13:02
2003.07.31
Бесплатный хостинг


1-100669
johny
2003-07-18 08:26
2003.07.31
работа с treeview


3-100595
uuuu
2003-07-09 09:46
2003.07.31
Время ожидания истекло


3-100600
Soft
2003-07-08 15:28
2003.07.31
Объектно ориентированная база данных