Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

Компонент 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.062 c
1-1091264058
Alexander /Brut/
2004-07-31 12:54
2004.08.15
Вновь об использовании буфера обмена по средствам SendMessage


1-1091504016
Eagle8
2004-08-03 07:33
2004.08.15
Icon


1-1091589740
X - type
2004-08-04 07:22
2004.08.15
Как определить директорию


6-1087387389
Amirka
2004-06-16 16:03
2004.08.15
Как вытащить определенный текст из html-файла?


1-1091595190
noster
2004-08-04 08:53
2004.08.15
число или строка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский