Главная страница
    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.034 c
3-1090299812
Tempo
2004-07-20 09:03
2004.08.15
Как узнать номер новой записи.


4-1088796139
Vasya.ru
2004-07-02 23:22
2004.08.15
Как программно запретить запуск системных служб?


14-1090917276
Просто Вася
2004-07-27 12:34
2004.08.15
Пора отпусков


6-1087144256
lena19
2004-06-13 20:30
2004.08.15
NetShareGetInfo !! FOR WINXP !!


4-1089031212
sergeii
2004-07-05 16:40
2004.08.15
Как поменять текст в Edit-e





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский