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

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

Как запретить изменение ширины колонок в ListView?


Германн ©   (2011-04-05 16:07:00) 

Поисковики дают решение и подменой WindowProc для ListView. Оно рабочее, но некрасивое. Ширину действительно изменить нельзя, но курсор изменения ширины всё-таки показывается. Может кто-нибудь знает другой способ?
Д2007


Германн   (2011-04-08 17:55:00) [1]


> Rouse_ ©   (08.04.11 17:49) [15]

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


Rouse_   (2011-04-08 17:49:00) [2]

Попробуй с вот этим поэксперементировать: http://rouse.drkb.ru/components.php#gslistview
Там есть свойство CustomCoumnTrack, я его правда почемуто в published забыл вынести, не помню почему. Его выставь в True и в обработчике OnTrack указывай фиксированную ширину. Ну например вот так:

procedure TForm1.FormCreate(Sender: TObject);
begin
 GSListView1.CustomCoumnTrack := True;
end;

procedure TForm1.GSListView1Track(Sender: TObject; var AWidth: Integer);
begin
 case GSListView1.TrackedColumn of
   0: AWidth := 100;
   1: AWidth := 200;
 end;
end;


Германн   (2011-04-06 02:16:00) [3]


> Германн ©   (06.04.11 02:13) [13]
>
>
> > DiamondShark ©   (06.04.11 02:10) [11]
>
> Хм. А вот это идея. И как я сам не додумался?
>

Хм. Не подходит. Заказчик сразу завопит, что такой ListView никуда не годится.


Германн   (2011-04-06 02:13:00) [4]


> DiamondShark ©   (06.04.11 02:10) [11]

Хм. А вот это идея. И как я сам не додумался?


Германн   (2011-04-06 02:11:00) [5]


> Юрий   (05.04.11 20:53) [8]
>
>
> > "Заказчику" не нравится такой вариант. (((
>
>
> Судя по всему, Германн пишет для ослопитомник

Хошь верь, хошь не верь. Но пока под термином "заказчик" подразумеваются только только те люди, которые работают в техотделе той фирмы, на которую я сейчас в основном работаю. (По крайней мере я в этой фирме получаю ежемесячную плату без непосредственной связи с результатами моей работы :)
Все эти люди мне давно знакомы. Но их испортили "программеры", которые работали в моей прежней фирме. То же относится и к некоторым менеджерам.


DiamondShark   (2011-04-06 02:10:00) [6]


> Заказчик пока не понимает, что "удобная" ширина колонок
> зависит не только от количества букв.

Поставить тему экрана с крупным шрифтом и заставить работать неделю.


Германн   (2011-04-06 02:01:00) [7]


> clickmaker ©   (05.04.11 17:39) [6]
>
> > курсор изменения ширины всё-таки показывается
>
> ну, WM_SETCURSOR можно еще перехватывать
>

Возможно придется именно так и делать, если не удастся переубедить заказчика, что возможность пользователю самому менять ширину колонок есть благо для пользователя, а не вред. Заказчик пока не понимает, что "удобная" ширина колонок зависит не только от количества букв.


Rouse_   (2011-04-05 22:09:00) [8]


> _Юрий   (05.04.11 20:53) [8]
> Сделайте скрин-шот хедера, и подложите картинку :-)

Шикарный вариант :)))


_Юрий   (2011-04-05 20:53:00) [9]


> "Заказчику" не нравится такой вариант. (((


Судя по всему, Германн пишет для ослопитомник - то им курсор не нравится, то фокус.
Сделайте скрин-шот хедера, и подложите картинку :-)


ListView   (2011-04-05 18:55:00) [10]

ListView.Enabled:= False
?


clickmaker   (2011-04-05 17:39:00) [11]

> курсор изменения ширины всё-таки показывается

ну, WM_SETCURSOR можно еще перехватывать


QAZ   (2011-04-05 17:30:00) [12]

попробуй выцепить хидер из листа LVM_GETHEADER
потом добавь хидеру стиль HDS_NOSIZING (работает Vista и выше)

или борись с курсором


Германн   (2011-04-05 16:50:00) [13]


> Eraser ©   (05.04.11 16:43) [3]

"Заказчику" не нравится такой вариант. (((


Eraser   (2011-04-05 16:43:00) [14]

Можно выставить в Columns MaxWidth MinWidth - курсор будет меняться, эффект изменения ширины тоже будет видно, но после отпускания левой кнопки мыши - ширина вернется на место.


Германн   (2011-04-05 16:40:00) [15]


> вернуть true в обработчике HDN_BEGINTRACK не помогает?

Нет.


clickmaker   (2011-04-05 16:19:00) [16]

> подменой WindowProc для ListView

в вернуть true в обработчике HDN_BEGINTRACK не помогает?


Наверх

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