Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Компонент TListView   Найти похожие ветки 

 
Vedem   (2004-07-28 11:29) [0]

Здравствуйте! Может кто подскажет, как заставить отрисовывать TListView с установленным ViewStile в vsReport в заголовке колонок "стрелочки сортировки"?


 
aLexx   (2004-07-28 12:37) [1]

Что-то в таком роде:
uses CommCtl;
var
 HI: HD_ITEM;
 H: HWND;
...

H := ListView_GetHeader(ListView1.Handle);
HI.Mask := HDI_TEXT or HDI_BITMAP or HDI_FORMAT;
HI.fmt := HDF_STRING or HDF_BITMAP or HDF_BITMAP_ON_RIGHT;
HI.hbm := Bitmap.Handle; //картинка со стрелкой
HI.pszText := "bla-bla-bla";
SendMessage(H, HDM_SETITEM, 0 {индекс колонки}, Integer(@HI));


 
Vedem   (2004-07-29 10:47) [2]

Спасибо! Все замечательно работает, но возникла еще проблемка:
при изменении ширины колонки картинка просто напросто исчезает!
У мастеров есть рекомендации по этому поводу?


 
Vedem ©   (2004-07-29 15:52) [3]

Ответа так и не последовало :(

Сам кое-чего нарыл, может кому поможет:



unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComCtrls, commctrl;

type
 TForm1 = class(TForm)
   ListView1: TListView;
   procedure FormCreate(Sender: TObject);
 private
   FHeader: HWND;
   FBmp: HBITMAP;
   FOldListWndProc: TWndMethod;
   procedure ListWndProc(var Msg: TMessage);
 public
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
item: HD_ITEM;
begin
FBmp := LoadBitmap(0, MAKEINTRESOURCE(OBM_DNARROWD));
item.Mask := HDI_BITMAP or HDI_FORMAT;
item.hbm := FBmp;
item.fmt := HDF_STRING or HDF_BITMAP_ON_RIGHT or HDF_BITMAP;
FHeader := GetWindow(ListView1.Handle, GW_CHILD);
SendMessage(FHeader, HDM_SETITEM, 1, LPARAM(@item));
FOldListWndProc := ListView1.WindowProc;
ListView1.WindowProc := ListWndProc;
end;

procedure TForm1.ListWndProc(var Msg: TMessage);
var
item: HD_ITEM;
begin
if Assigned(FOldListWndProc) then FOldListWndProc(Msg);
if Msg.Msg = WM_NOTIFY then
   if HD_NOTIFY(Pointer(Msg.LParam)^).Hdr.code = HDN_ENDTRACK then
     begin
      item.Mask := HDI_BITMAP or HDI_FORMAT;
      item.hbm := FBmp;
      item.fmt := HDF_STRING or HDF_BITMAP_ON_RIGHT or HDF_BITMAP;
      SendMessage(FHeader, HDM_SETITEM, 0, LPARAM(@item));
     end
end;

end.




Страницы: 1 вся ветка

Текущий архив: 2004.08.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.052 c
1-1091361175
Antonmm
2004-08-01 15:52
2004.08.15
StatusBar


14-1090821412
Vlad Oshin
2004-07-26 09:56
2004.08.15
Повышать или не повышать приоритет процесса?


8-1085138881
Denis56
2004-05-21 15:28
2004.08.15
Как узнать цвет под мышкой?


14-1090809941
ProgC
2004-07-26 06:45
2004.08.15
Какая должность лучше?


14-1090927794
Esu
2004-07-27 15:29
2004.08.15
Чего посоветуете спросить по C/C++