Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Событие ListView [D7, XP]


webpauk ©   (2008-12-05 09:04:00) 

есть ли у TListView(ViewStyle=vsReport) событие, отвечающее за изменение размера колонки?


Rouse_   (2008-12-05 09:49:00) [1]

Писал в свое время что-то такое, обработчик нотификаций заголовка выглядел примерно так:

procedure TGSListview.WndProc(var Message: TMessage);
var
 HDR_STYLE: Integer;
 bIsSet: Boolean;
begin
 inherited;
 with Message do
   if Msg = WM_NOTIFY then
   begin
     with PHDNotify(LParam)^ do
     case Hdr.code of
       HDN_BEGINTRACK, HDN_BEGINTRACKW:
       begin
         if SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, @bIsSet, 0) then
           if bIsSet then
           begin
             HDR_STYLE := GetWindowLong(FHeaderHandle, GWL_STYLE);
             if (HDR_STYLE and HDS_FULLDRAG) = HDS_FULLDRAG then
               SetWindowLong(FHeaderHandle, GWL_STYLE,
                HDR_STYLE and not HDS_FULLDRAG);
           end;
         if Assigned(FBeginTrack) then
           FBeginTrack(Self);
         Result := 0;
       end;
       HDN_ENDTRACK, HDN_ENDTRACKW:
       begin
         if Assigned(FEndTrack) then
           FEndTrack(Self);
         Result := 0;
       end;
       HDN_TRACK, HDN_TRACKW:
       begin
         if PItem^.mask = HDI_WIDTH then
           if Assigned(FTrack) then
             FTrack(Self, PItem^.cxy);
         Result := 0;
       end;
     end;
   end;
end;


Сергей М.   (2008-12-05 09:46:00) [2]

Это событие извещения родительского окна контрола, извещающее о свершившемся фактеизменения состояния контрола.


webpauk   (2008-12-05 09:39:00) [3]


> Сергей М. ©   (05.12.08 09:35) [6]

за изменение ширины колонки


Palladin   (2008-12-05 09:37:00) [4]

Это нотификация headerconrol'а


Сергей М.   (2008-12-05 09:35:00) [5]


> за данное поведение


За какое такое "данное" ?


webpauk   (2008-12-05 09:33:00) [6]

методом научного тыка установлено: за данное поведение у TcustomListView отвечает процедура:
procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY;

а именно:
procedure TLV.WMNotify(var Message: TWMNotify);
begin
 inherited;

 with Message.NMHdr^ do
   case code of
     HDN_ENDTRACK: ShowMessage('');
   end;

end;


Сергей М.   (2008-12-05 09:32:00) [7]

Ручками.
Или автоматически - TListColumn.AutoSize
Или программно - TListColumn.Width


Palladin   (2008-12-05 09:32:00) [8]

Вопрос стал еще круче и загадочней.


webpauk   (2008-12-05 09:22:00) [9]


> Сергей М. ©   (05.12.08 09:14) [1]


Поставим вопрос по другому: как изменяется размер колонки?


Сергей М.   (2008-12-05 09:14:00) [10]

Нет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо