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

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

Как определить момент изменения размера колонки в Listview [D6, Win2k]


dreams ©   (2004-10-12 14:00:00) 

Собствено Сабж. Пока ничего не смог найти :(  кто нибудь сталкивался ?


Miron   (2004-10-12 22:02:00) [1]


> Семен Сорокин ©   (12.10.04 14:24) [1]

Это только начало и конец изменения. Тут все работает...
А вот сам процесс... Хренотень какая-то, короче.

Если изменить так:

unit ExListView;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, ComCtrls, CommCtrl;

TExListView = class(TListView)
private
 FOnColumnResize: TNotifyEvent;
 procedure WMNotify(var Msg: TWMNotify); message WM_NOTIFY;
published
 property OnColumnResize: TNotifyEvent read FOnColumnResize write FOnColumnResize;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TExListView]);
end;

{ ------------------------------- TExListView -------------------------------- }

procedure TExListView.WMNotify(var Msg: TWMNotify);
begin
    inherited;
    case Msg.NMHdr^.code of      
       Low(Integer)..High(Integer): if Assigned(FOnColumnResize) then
       FOnColumnResize(self);
    end
end;

end.



и в сделать
procedure TForm1.ListView1ColumnResize(Sender: TObject);
var
  Loop: Integer;
begin
   Caption := '';
   for Loop := 0 to ListView1.Columns.Count - 1 do begin
      Caption := Caption + IntToStr(ListView1.Column[Loop].Width) + '   ';
   end;
end;


Caption изменяется когда угодно, но только не в процессе изменения ширины столбца. Видимо, кто-то в Borlande схалтурил...


begin...end   (2004-10-12 14:47:00) [2]


> [2] dreams   (12.10.04 14:45)


> я использую уже готовый компонент Listview ( не стандартный
> ) и переделать его не могу так как исходники закрыты

Вроде в [1] было создание наследника, а не переделывание.


dreams   (2004-10-12 14:45:00) [3]

> Семен Сорокин ©   (12.10.04 14:24) [1]

Спасибо за помощь , но тут дело в чём : я использую уже готовый компонент Listview ( не стандартный ) и переделать его не могу так как исходники закрыты :(  

Стандартное решение есть ?


Семен Сорокин   (2004-10-12 14:24:00) [4]

unit ExListView;

interface

uses
 Windows, Messages, SysUtils, Classes, Controls, ComCtrls, CommCtrl;

type
 TVLColumdBeginResizeEvent = procedure(Sender: TObject; Column: TListColumn) of object;
 TVLColumdEndResizeEvent = TVLColumdBeginResizeEvent;

 TExListView = class(TListView)
 private
  FOnColumnBeginResize: TVLColumdBeginResizeEvent;
  FOnColumnEndResize: TVLColumdEndResizeEvent;
  procedure WMNotify(var Msg: TWMNotify); message WM_NOTIFY;
 published
  property OnColumnBeginResize: TVLColumdBeginResizeEvent read FOnColumnBeginResize write FOnColumnBeginResize;
  property OnColumnEndResize: TVLColumdEndResizeEvent read FOnColumnEndResize write FOnColumnEndResize;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents('Samples', [TExListView]);
end;

{ ------------------------------- TExListView -------------------------------- }

procedure TExListView.WMNotify(var Msg: TWMNotify);
begin
inherited;
case Msg.NMHdr^.code of      
 HDN_BEGINTRACK: if Assigned(FOnColumnBeginResize) then
  FOnColumnBeginResize(self, Columns[PHDNotify(Pointer(Msg.NMHdr))^.Item]);
 HDN_ENDTRACK: if Assigned(FOnColumnEndResize) then
  FOnColumnEndResize(self, Columns[PHDNotify(Pointer(Msg.NMHdr))^.Item])
end
end;

end.


Наверх

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