Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ImageList.Draw, как удалить нарисованное ImageList.Draw 
V
    Опции темы
chikistbuch
Дата 26.4.2012, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 15.3.2008

Репутация: нет
Всего: 1



В продолжение темы: http://forum.vingrad.ru/forum/topic-349986...ажени.html

С помощью данного кода происходит отрисовка изображения в заголовке DBGrid'a в колонке с порядковым номером order_n:

Код

procedure TDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);//процедура для отрисовки изображения в title DBGrid'a
begin
  // Вызываем стандартную отрисовку...
  inherited;
  //...а затем рисуем свои картинки на заголовках!
  if (gdFixed in AState) then
    if (ACol=order_n) then form1.ImageList2.Draw(Canvas, ARect.Left, ARect.Top, 0);
end;


но при изменении order_n, который меняется при нажатии на Title DBGrid'a:

Код

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
  order_n:=column.Index+1;
  order:=column.Title.ToString;
end;
 

происходит рисование еще одной стрелочки, а предыдущая не убирается.
При наведении мышки на заголовок грида с предыдущей стрелкой, грид сам её перезатирает.
Каким образом указать DBGrid'у чтобы он сам перерисовал именно предыдущий (или все) заголовок я не знаю ((

Так вот вопрос: как её удалить?

Может в ImageList'е есть что-то типа убить всё что им нарисовано?

user posted image


PM MAIL   Вверх
XperT
Дата 26.4.2012, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 269
Регистрация: 19.8.2006

Репутация: 2
Всего: 4



Цитата

Так вот вопрос: как её удалить?

Нужно делать InvalidateRect

Это сообщение отредактировал(а) XperT - 26.4.2012, 21:48
PM MAIL   Вверх
chikistbuch
Дата 26.4.2012, 22:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 15.3.2008

Репутация: нет
Всего: 1



Цитата(XperT @  26.4.2012,  21:48 Найти цитируемый пост)
Нужно делать InvalidateRect


Шикарно!!!  smile  Спасибо, только я написал так:

Код

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
  form1.DBGrid1.InvalidateTitles;
end;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.