![]() |
|
|
![]()
|
|
| JohnWind |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 22.1.2008 Где: Львов, Украина Репутация: нет Всего: нет |
Собственно сабж..
Использую Visual C++ 2005, CListCtrl в режиме рэпорт. виртуальных списков не использую.. как определить какие столбцы можно сужить или растянуть и как определить ли их надо растягивать ? это надо проверять когда заполняю таблицу данными? |
|||
|
||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Вызывать нужно после заполнения, если хочешь, чтобы учитывались данные, а не только хедер. И, естественно, это не означает, что ширина столбца будет меняться "сама" при изменении данных - функция одноразовая - вычислить размер столбца согласно текущим данным.
Это вообще шикарный вопрос -------------------- ... |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
он имеет в виду саму возможность: как определить необходимую ширину для текста конкретной строки в конкретной колонке. И прогнав от 0 до size-1 по строкам узнать максимальную ширину, а далее вызвать вышеупомянутый метод, для подгонки размера столбца.... в мфц я не силен. еще гадаю по портам и md5 хешу имени...) -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Телепат Тогда так: чтобы вычислить необходимый размер колонки, нужно взять контекст (CDC), установить туда фонт, полученный от лист-контрола, и прогнать через него все строки, содержащиеся в колонке. Или есть более удобная функция CListCtrl::GetStringWidth, которая делает это же самое, но избавляет нас от необходимости копаться в CDC. В цикле находишь максимальную ширину строки, сравниваешь ее с текущей и определяешь, что нужно сделать. Тут все зависит от задачи. Например, мы хотим, чтобы все таблица (без горизонтального скрола) помещалась в окно, и все его занимала, и при этом разумно распределялись ширины колонок (т.е. пропорционально данным). Один из вариантов: после заполнения таблицы делаем всем колонкам автосайз по данным, затем определяем их суммарную ширину, затем вычитаем ее из физической ширины окна (клиентской части) и пропорционально распределяем по колонкам. Вычисляя доступную ширину, нужно учитывать наличие вертикального скролла. Ну и т.д. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |