Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизКак определить момент изменения размера колонки в Listview Найти похожие ветки
← →
dreams (2004-10-12 14:00) [0]Собствено Сабж. Пока ничего не смог найти :( кто нибудь сталкивался ?
← →
Семен Сорокин © (2004-10-12 14:24) [1]
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.
← →
dreams (2004-10-12 14:45) [2]> Семен Сорокин © (12.10.04 14:24) [1]
Спасибо за помощь , но тут дело в чём : я использую уже готовый компонент Listview ( не стандартный ) и переделать его не могу так как исходники закрыты :(
Стандартное решение есть ?
← →
begin...end © (2004-10-12 14:47) [3]
> [2] dreams (12.10.04 14:45)
> я использую уже готовый компонент Listview ( не стандартный
> ) и переделать его не могу так как исходники закрыты
Вроде в [1] было создание наследника, а не переделывание.
← →
Miron (2004-10-12 22:02) [4]
> Семен Сорокин © (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 схалтурил...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c