Текущий архив: 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.48 MB
Время: 0.009 c