![]() |
|
![]() ![]() ![]() |
|
AndreySol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: 1 Всего: 1 |
Есть ListCtrl в стиле Report. Как сделать динамическое изменение ширины колонки при добавлении в эту колонку итема, у которого текст будет длинее ширины колонки ? Точнее, как изменить ширину колонки это понятно, а вот как вычислить ее относительно длины текста ?
Хотя-бы в общих чертах ? |
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: 1 Всего: 0 |
Чтоб вычислить длину текста в пикселях:
создать контекст для рисования, выбрать в него(CDC::SetFont()) шрифт твоего CListCtrl (CListCtrl::GetFont). получить размер текста в пикселях CDC::DrawText(..,..,DT_CALCRECT). дальше если надо к длине полученного прямоугольника добавляешь размер отступа текста от краев столбца. так можно получить нужную ширину столбца. может можно как то еще... |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Все вышеперечисленное делает готовая функция CListCtrl::GetStringWidth
-------------------- ... |
|||
|
||||
AndreySol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: 1 Всего: 1 |
Спасибо, чевой-то не подумал, что может быть такая ф-ция класса.
|
|||
|
||||
serg405 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 118 Регистрация: 12.6.2008 Репутация: нет Всего: нет |
Мне нужно разрисовать ListCrtl в котором остоянно меняютса значения с большой скоростю. Все было бы хорошо но почемуто проскакивает фон самово контрола при каждом изминении даных и получаетса сильное мигание текста. Как устранить мигание?
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
А как же: чтобы нарисовать, нужно сначала стереть. Чтобы не мерцало, путь один - через внеэкранный буфер... Была где-то темка от Dreamer про что-то похожее, поищи.
-------------------- ... |
|||
|
||||
alviro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 18.4.2008 Репутация: нет Всего: нет |
Помогите, пожалуйста! Нужно создать таблицу, к ячейкам которой должен быть доступ. То есть пользователь должен просто иметь возможность выбирать данные, кликая по ним. Использую List Control. Таблица заполняется, но только первый столбец дает возможность по нему щелкать. Думаю, что неправильно заполняю. Есть вообще такая возможность у CListCtrl?
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Заполняешь ты, скорее всего, правильно. Но стандартный лист-контрол умеет редактировать только первую колонку. И выбирать только целую строку. Чтобы выделить всю строку, а не только первый элемент, используй расширенный стиль LVS_EX_FULLROWSELECT.
Но это все же не таблица. Чтобы превратить лист-контрол в полноценную таблицу, нужно много чего написать руками. Посмотри на codeproject, там есть примеры таблиц как на основе лист-контрола, так и с нуля. И впредь создавай свою тему. -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |