Как скрыть колонку в TListView?
От: Иванов Иван Петрович  
Дата: 09.05.05 05:56
Оценка:
Здравствуйте.
Подскажите пожалуйста, каким образом можно спрятать, а потом показать колонку 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-ой.

Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.