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

Вниз

Имена колонок TListView. Delphi 7.   Найти похожие ветки 

 
worldmen ©   (2005-09-07 17:22) [0]

Можно ли в TListView, в наименовании колонок писать в две строки?
Если можно, то как?


 
Турист   (2005-09-09 00:14) [1]

Вроде, работает


type
 TMyListView = class(TListView)
 private
   FListViewHeaderHandle: HWnd;
   FListViewHeaderInstance: Pointer;
   FListViewHeaderWndProc: Pointer;
 protected
   procedure HeaderWndProc(var Message: TMessage);
   procedure WMDrawItem(var Message: TWMDrawItem); message WM_DRAWITEM;
   procedure WMParentNotify(var Message: TWMParentNotify); message WM_PARENTNOTIFY;
 public
   constructor Create(aOwner: TComponent); override;
   destructor Destroy; override;
 end;

 TListView = class(TMyListView);

 TForm1 = class(TForm)
   ListView1: TListView;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

constructor TMyListView.Create(aOwner: TComponent);
begin
 inherited Create(aOwner);
 FListViewHeaderInstance := MakeObjectInstance(HeaderWndProc);
end;

destructor TMyListView.Destroy;
begin
 if FListViewHeaderHandle <> 0 then
   SetWindowLong(FListViewHeaderHandle, GWL_WNDPROC, LongInt(FListViewHeaderWndProc));
 FreeObjectInstance(FListViewHeaderInstance);
 inherited Destroy
end;

procedure TMyListView.WMParentNotify(var Message: TWMParentNotify);
begin
 with Message do
   if (Event = WM_CREATE) and (FListViewHeaderHandle = 0) then
   begin
     FListViewHeaderHandle := ChildWnd;
     FListViewHeaderWndProc := Pointer(GetWindowLong(FListViewHeaderHandle, GWL_WNDPROC));
     SetWindowLong(FListViewHeaderHandle, GWL_WNDPROC, LongInt(FListViewHeaderInstance));
   end;
 inherited;
end;

procedure TMyListView.WMDrawItem(var Message: TWMDrawItem);
begin
 with Message.DrawItemStruct^ do begin
   FillRect(hDC, rcItem, GetStockObject(BLACK_BRUSH));
   DrawFrameControl(hDC, rcItem, DFC_BUTTON, DFCS_BUTTONPUSH);
   DrawText(hDC, PChar(Columns[itemID].Caption), -1, rcItem, DT_CENTER)
 end
end;

procedure TMyListView.HeaderWndProc(var Message: TMessage);
var
 i: Integer;
 HDItem: THDItem;
begin
 try
   with Message do begin
     case Msg of
       WM_NCDESTROY:
         begin
           Result := CallWindowProc(FListViewHeaderWndProc, FListViewHeaderHandle, Msg, WParam, LParam);
           FListViewHeaderHandle := 0;
           FListViewHeaderWndProc := nil;
           Exit;
         end;
     end;
     Result := CallWindowProc(FListViewHeaderWndProc, FListViewHeaderHandle, Msg, WParam, LParam);
     if Msg = HDM_LAYOUT then begin
       with PHDLayout(LParam)^ do begin
         Rect.Top := Rect.Top + WindowPos.cy;
         WindowPos.cy := WindowPos.cy + WindowPos.cy
       end;
       FillChar(HDItem, SizeOf(HDItem), 0);
       HDItem.Mask := HDI_FORMAT;
       HDItem.fmt := HDF_OWNERDRAW;
       for i := 0 to Columns.Count - 1 do
         SendMessage(FListViewHeaderHandle, HDM_SETITEM, i, LongInt(@HDItem))
     end
   end;
 except
   Application.HandleException(Self)
 end
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 i: Integer;
begin
 with ListView1 do
   for i := 0 to Columns.Count - 1 do
     Columns[i].Caption := Columns[i].Caption + #13#10 + Columns[i].Caption
end;



 
worldmen ©   (2005-09-16 09:41) [2]

Да, работает.
Только пири изменении размера колонки, имя колонки превращается в одну строку.



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

Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.049 c
5-1103272761
LAndrey
2004-12-17 11:39
2005.10.16
Создание списка в DesignTime


14-1127397129
Prohodil Mimo
2005-09-22 17:52
2005.10.16
Нужно ли уничтожать формы, если они не создаются при старте ?


1-1127886283
novikova
2005-09-28 09:44
2005.10.16
I/O Error 53 - что это?


14-1127769010
TButton
2005-09-27 01:10
2005.10.16
Драйвер модема для Siemens M65


2-1127322112
quadronik
2005-09-21 21:01
2005.10.16
логотип при загрузке программы





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