Здравствуйте.
Подскажите пожалуйста, каким образом можно спрятать, а потом показать колонку TListView.
Я дела это так.
Прячу:
ListView1.Column[2].Tag:=ListView1.Column[2].Width;
ListView1.Column[2].Width:=0;
Показываю:
ListView1.Column[2].Width:=ListView1.Column[2].Tag;
Но при такой реализации есть один минус: Если мышкой взяться справа от разделителя между 1-ой и 2-ой колонкой, то будут изменяться размеры 2-ой колонки(которая скрыта) что не нужно.
Предотвратить перемещение скрытой колонки можно так.
procedure TForm1.CheckMesg(var aMesg: TMessage);
var
HDNotify: ^THDNotify;
NMHdr: pNMHdr;
iCode: Integer;
begin
case aMesg.Msg of
WM_NOTIFY:
begin
HDNotify := Pointer(aMesg.lParam);
iCode := HDNotify.Hdr.code;
if (iCode = HDN_BEGINTRACKW) or
(iCode = HDN_BEGINTRACKA) then
begin
NMHdr := TWMNotify(aMesg).NMHdr;
if pHDNotify(NMHdr)^.Item=2 then
aMesg.Result := 1;
end
end;
end;
end;
Вопрос: Можно ли сделать так: если мышкой взяться справа от разделителя между 1-ой и 2-ой колонкой, то изменялись бы размеры не скрытой колонки а 1-ой.
Заранее спасибо.