Недавно добавленные исходники

•  Animation Loaders  676

•  DeLiKaTeS Tetris (Тетрис)  5 689

•  TDictionary Custom Sort  7 643

•  Fast Watermark Sources  7 335

•  3D Designer  10 539

•  Sik Screen Capture  7 857

•  Patch Maker  8 080

•  Айболит (remote control)  8 141

•  ListBox Drag & Drop  6 936

•  Доска для игры Реверси  100 123

•  Графические эффекты  8 198

•  Рисование по маске  7 600

•  Перетаскивание изображений  6 202

•  Canvas Drawing  6 567

•  Рисование Луны  6 491

•  Поворот изображения  5 671

•  Рисование стержней  4 594

•  Paint on Shape  3 293

•  Генератор кроссвордов  4 281

•  Головоломка Paletto  3 419

•  Теорема Монжа об окружностях  4 241

•  Пазл Numbrix  2 750

•  Заборы и коммивояжеры  3 656

•  Игра HIP  2 462

•  Игра Go (Го)  2 444

•  Симулятор лифта  2 856

•  Программа укладки плитки  2 293

•  Генератор лабиринта  3 014

•  Проверка числового ввода  2 514

•  HEX View  2 920

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Как поместить картинку в заголовок TListView



Программисты (он и она) лежат в постели и отдыхают после занятий любовью.
Она: - Не хочешь повторить процедуру?
Он: - Функция еще не вернула значения.

Иногда бывает полезно в заголовке колонки показывать стрелочку, чтобы информировать пользователя, по какой колонке идёт сортировка. Добавьте следующий код в форму:


procedure TForm1.SetColumnImage( List: TListView; Column,
Image: Integer; ShowImage: Boolean);
var
  Align, hHeader: integer;
  HD: HD_ITEM;
begin
  hHeader := SendMessage(List.Handle, LVM_GETHEADER, 0, 0);
  with HD do
  begin
    case List.Columns[Column].Alignment of
      taLeftJustify:
        Align := HDF_LEFT;
      taCenter:
        Align := HDF_CENTER;
      taRightJustify:
        Align := HDF_RIGHT;
      else
        Align := HDF_LEFT;
    end;

    mask := HDI_IMAGE or HDI_FORMAT;

    pszText := PChar(List.Columns[Column].Caption);

    if ShowImage then
      fmt := HDF_STRING or HDF_IMAGE or HDF_BITMAP_ON_RIGHT
    else
      fmt := HDF_STRING or Align;

    iImage := Image;
  end;
  SendMessage(hHeader, HDM_SETITEM, Column, Integer(@HD));
end;

Картинки берутся из списка SmallImages. Вам надо будет вызвать эту функцию для каждой колонки и установить ShowImage в TRUE для той колонки, которую Вы будете сортировать. Сделать это можно в функции OnColumnClick():


procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
var
  i: integer;
begin
  // Это Ваша собственная функция сортировки
  CustomSort( @CustomSortProc, Column.index );
  // Этот цикл отображает иконку в выбранной колонке.
  for i := 0 to ListView1.Columns.Count-1 do
    SetColumnImage( ListView1, i, 0, i = Column.index );
end;

Проблема:

Изменение размера колонки генерирует сообщение WM_PAINT, которое стирает картинку, поэтому Вам прийдётся переопределить WM_PAINT и вызвать SetColumnImage снова.

Использовался компонент TApplicationEvents в delphi 5.








Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте