Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вписать текст в ширину ячейки таблицы? 
:(
    Опции темы
Sawulik
Дата 15.5.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.5.2006

Репутация: нет
Всего: нет



Помогите кто может!

Я рисую таблицу в CView с помощью CDC. Мне нужно заполнять эту таблицу текстом из некоторого файла. Ширина текста для каждой ячейки естественно каждый раз разная. 
Хотелось бы иметь что-то наподобие примочки Word'a, изменяющей ширину символов (без изменения их высоты) и расстояние между символами, чтобы можно было, зная ширину текста и ширину ячейки таблицы, вписать этот текст. В функциях для работы с текстом  из MSDN я запуталась. 
Может есть какие-то мысли или немного другое решение моей проблемы???

Заранее спасибо.  
PM MAIL   Вверх
Earnest
Дата 15.5.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Это тебе каждый раз нужно новый фонт создавать, да и выглядеть будет безобразно... А если строка окажется ну очень длинной?
Но если очень хочешь, то смотри в сторону LOGFONT и CreateFontIndirect. Спроси LOGFONT у своего CDC (чтобы все не заполнять), а потом меняй Width и создавай новый фонт.

А в качестве другого решения проблемы могу предложить in-place tooltips (это когда при наведениии мыши в ячейке всплывает полный текст).  


--------------------
...
PM   Вверх
Sawulik
Дата 15.5.2006, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.5.2006

Репутация: нет
Всего: нет



Если строка очень длинная, естественно надо будет переносить, ну а если символ или два не влезают, то лучше будет сжать. Про LOGFONT я знаю, так и делала. Только с изменением ширины шрифта и есть проблема: по умолчанию стоит 0, а когда я сама устанавливаю - криво получается, к тому же у меня zoom еще, и при увеличении / уменьшении картинки нужно ширину шрифта  как-то пропорционально изменять, а у меня не получается. Не знаю как... 

tooltip по условию задачи мне не подходит, мне в итоге эту таблицу на печать выводить, а tip не выведешь 
PM MAIL   Вверх
Earnest
Дата 16.5.2006, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Sawulik @  15.5.2006,  20:56 Найти цитируемый пост)
криво получается

??? В смысле некрасиво?

Цитата(Sawulik @  15.5.2006,  20:56 Найти цитируемый пост)
к тому же у меня zoom еще

Либо при зуме менять фонт, либо установить логические координаты, не зависящие от масштаба.

 


--------------------
...
PM   Вверх
Sawulik
Дата 16.5.2006, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.5.2006

Репутация: нет
Всего: нет



Цитата

...либо установить логические координаты, не зависящие от масштаба.


Я не поняла, можно поподробнее? 
PM MAIL   Вверх
Earnest
Дата 16.5.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Ну, у тебя скорее всего стоит режим MM_TEXT, т.е. то, что по умолчанию в контексте установлено.
Но дело в том, что можно установить и другую систему координат (читай про CDC::SetMapMode). И тогда ты можешь установить, что размер твоей ячейки всегда равен, скажем, 80 * 10, независимо от масштаба. А LOGFONT принимает значения именно в логических кординитах. Просто в режиме MM_TEXT логические координаты == пикселы. Переход между пикселами и логическими координатами: LpToDp, DpToLp.
Не могу сказать, насколько это будет удобно, но как вариант.
Хотя, если ты все равно хочешь сжимать текст, чтобы влез в ячейку, то с Width разобраться придется. В качестве первого приближения можно попробовать, скажем,  разделить желаемую ширину текста на число символов в строке. А еще можно попробовать поменять межсимвольное расстояние (SetTextCharacterExtra).
 


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1340 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.