![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить момент изменения размера колонки в 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.