Выравнивание отличное от LVCFMT_LEFT в 0-й колонке ListView

Odi$$ey Odi$$ey
Здравствуйте, UNI_X, Вы писали:

UNI>...на этапе создания ListView, вернее когда он уже создан, и создаются столбцы, я указываю им стиль выравнивания текста: LVCFMT_CENTER Но первый столбец всегда игнорирует этот стиль, там текст всегда по левому краю идет. MSDN по этому поводу пишет:


If a column is added to a list-view control with index 0 (the leftmost column) and with LVCFMT_RIGHT or LVCFMT_CENTER specified, the text is not right-aligned or centered. The text in the index 0 column is left-aligned. Therefore if you keep inserting columns with index 0, the text in all columns are left-aligned. If you want the first column to be right-aligned or centered you can make a dummy column, then insert one or more columns with index 1 or higher and specify the alignment you require. Finally delete the dummy column.


UNI>Если честно я не совсем понял, как они предлагают решить эту проблему. Я пробовал сам 2 способа. 1) Создать столбец с нулевым индексом, задать ему ширину 0 и оставить без текста, что бы его просто видно не было, но это не помогло. 2) Пробовал так же задавать индексы столбцам не с нуля, а сразу с 1, это тоже что-то не помогло


они прелагают добавить 0-ю колонку, пофиг с какими настройками, потом добавить 1-ю с нужным выравниванием, потом 0-ю удалить (LVM_DELETECOLUMN), а дальше добавлять все остальные как обычно, работает, проверено.
... << RSDN@Home 1.2.0 alpha rev. 662>>
UNI_X
UNI_X Парочка вопросов по ListView
21.11.2006 04:08
Здравствуйте, Odi$$ey, Вы писали:

OE>они прелагают добавить 0-ю колонку, пофиг с какими настройками, потом добавить 1-ю с нужным выравниванием, потом 0-ю удалить (LVM_DELETECOLUMN), а дальше добавлять все остальные как обычно, работает, проверено.

Спасибо, тут всё ясно. Это работает. А как насчет второй части вопроса? Как можно сделать так, что бы бользователь не мог менять ширину столбцов?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
programmater
programmater
21.11.2006 05:30
Здравствуйте, UNI_X, Вы писали:

UNI>Здравствуйте, Odi$$ey, Вы писали:


OE>>они прелагают добавить 0-ю колонку, пофиг с какими настройками, потом добавить 1-ю с нужным выравниванием, потом 0-ю удалить (LVM_DELETECOLUMN), а дальше добавлять все остальные как обычно, работает, проверено.

UNI>Спасибо, тут всё ясно. Это работает. А как насчет второй части вопроса? Как можно сделать так, что бы бользователь не мог менять ширину столбцов?
Дешево и сердито! Не создавать хедер контрол вообще! Для этого используй стиль LVS_NOCOLUMNHEADER и будет тебе счастье. Нет человека — нет проблемы. Нет хедера — не за что таскать и изменять ширину столбцов . Ну а если без хедера жизнь тебе не мила, то копай в сторону HDN_ITEMCHANGING, мож поможет.
UNI_X
UNI_X
21.11.2006 08:28
Здравствуйте, programmater, Вы писали:

P>Дешево и сердито! Не создавать хедер контрол вообще! Для этого используй стиль LVS_NOCOLUMNHEADER и будет тебе счастье. Нет человека — нет проблемы. Нет хедера — не за что таскать и изменять ширину столбцов . Ну а если без хедера жизнь тебе не мила, то копай в сторону HDN_ITEMCHANGING, мож поможет.

Без хедера жизнь и впрямь не мила Через HDN_ITEMCHANGING конечно можно узнать ширину, но это так гиморно... это нужно для каждого стобца запоминать ширину, потом смотреть не изменилась ли она, и для какого хедера вообще происходит изменение... вобщем хотелось бы что-то более традиционное. Например выше я уже приводил куочек кода, но там не совсем ясно что к чему, он почему-то не работает
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Odi$$ey
Odi$$ey ListView - Locking Column Headers
22.11.2006 04:02
Здравствуйте, UNI_X, Вы писали:

UNI>Без хедера жизнь и впрямь не мила Через HDN_ITEMCHANGING конечно можно узнать ширину, но это так гиморно... это нужно для каждого стобца запоминать ширину, потом смотреть не изменилась ли она, и для какого хедера вообще происходит изменение... вобщем хотелось бы что-то более традиционное.


Paul DiLascia. Locking Column Headers
... << RSDN@Home 1.2.0 alpha rev. 662>>