Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ImageList.Draw


Автор: chikistbuch 26.4.2012, 20:44
В продолжение темы: http://forum.vingrad.ru/forum/topic-349986/kw-dbgrid-title-картинка-изображени.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'е есть что-то типа убить всё что им нарисовано?

http://s2.ipicture.ru/


Автор: XperT 26.4.2012, 21:48
Цитата

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

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

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


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

Код

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)