Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2011, 16:21   #1
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
Вопрос ListView (view style: vsReport)

Здраствуйте!
У меня есть компонент - ListView (view style: vsReport). Проблема в том, что я рисую на Canvas с OwnerDraw=True, и когда изменяю Width колонки, то у меня выходит такое:


Как мне отловить собитие на изменение Width колонки, чтобы пеперисовать тогда Item'ы??
Изображения
Тип файла: jpg 1211.jpg (135.4 Кб, 200 просмотров)

Последний раз редактировалось Delphi_ProGer; 17.11.2011 в 22:38.
Delphi_ProGer вне форума Ответить с цитированием
Старый 18.11.2011, 01:20   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

никто не знает
Delphi_ProGer вне форума Ответить с цитированием
Старый 18.11.2011, 01:34   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Так... Не хотелось, но придется...
Цитата:
3. Не флудить. Флудом (пустой болтовней) считается все, не относящееся к теме. Здесь вам не чат, а форум серьезно увлеченных людей.
К флуду относится также:
- "апание" темы, т.е. попытка привлечь к теме повышенное внимание за счет других, чужих тем;
- необоснованное (не требующееся по смыслу) цитирование предыдущего поста;
- оверквотинг (избыточное цитирование). При цитировании имеет смысл оставлять в цитате только тот текст, который имеет непосредственное отношение к вашему ответу.
- размещение своих постов подряд друг за другом - пользуйтесь кнопкой "Правка" для изменения своего сообщения. Исключение составляют лишь случаи, когда с момента написания предыдущего поста прошло не менее дня.

За флуд автор поста также получит нарушение №1.
mihali4 вне форума Ответить с цитированием
Старый 18.11.2011, 10:55   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вот выдернул из рабочей проги, ни каких эффектов подобного рода не наблюдаю
Код:
procedure TFBookEdit.ListViewDrawItem(Sender: TCustomListView; Item: TListItem; Rect: TRect; State: TOwnerDrawState);
var xColor: TColor;
    xRect: TRect;
    xBitmap: TBitmap;
    i: Integer;
begin
  if (Sender.Selected=Item) and Sender.Focused then xColor:=clActiveCaption
  else if Sender.Selected=Item then xColor:=clBtnFace
  else xColor:=clWindow;
  Sender.Canvas.Brush.Color:=xColor;
  Sender.Canvas.FillRect(Item.DisplayRect(drLabel));
  if (Sender.Selected=Item) and Sender.Focused
    then Sender.Canvas.Font.Color:=clWindow
    else Sender.Canvas.Font.Color:=clWindowText;
  xRect:=Item.DisplayRect(drLabel);
  Sender.Canvas.TextRect(xRect,xRect.Left+2,xRect.Top,Item.Caption);
  for i:=1 to TListView(Sender).Columns.Count-1 do begin
    xRect.Left:=xRect.Right+1;
    xRect.Right:=xRect.Left+TListView(Sender).Columns.Items[i].Width-1;
    Sender.Canvas.FillRect(xRect);
    Sender.Canvas.TextRect(xRect,xRect.Left+5,xRect.Top,Item.SubItems[i-1]);
  end;
  if TListView(Sender).SmallImages=nil then Exit;
  Sender.Canvas.Brush.Color:=clWindow;
  Sender.Canvas.FillRect(Item.DisplayRect(drIcon));
  if Item.ImageIndex=-1 then Exit;
  xBitmap:=TBitmap.Create;
  ImageList.GetBitmap(Item.ImageIndex,xBitmap);
  Sender.Canvas.BrushCopy(Item.DisplayRect(drIcon),xBitmap,Bounds(0,0,xBitmap.Width,xBitmap.Height),xBitmap.TransparentColor);
  xBitmap.Free;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.11.2011, 22:42   #5
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Спасибо за код, однако, проблема не решилась...хм...неужели это только у меня такой ефект??
Delphi_ProGer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заголовок ListView (vsReport) casio23 Общие вопросы Delphi 4 21.02.2011 15:07
Вывод иконок программ в ListView в стиле vsReport Человек_Борща Общие вопросы Delphi 1 09.11.2010 13:27
ListView (vsReport) показываем/прячем колонки Upgrades Общие вопросы Delphi 2 21.08.2010 18:13
[C# + WPF] ListView. Узнать выделена ли строка в нём. ListView.View == GridView. Casper-SC WPF, UWP, WinRT, XAML 2 12.08.2010 19:04
CheckBox в ListView в режиме vsReport cybopob90 Компоненты Delphi 0 24.03.2009 12:31