| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Динамическое поле с текстом |
| Автор: vinter 6.6.2008, 14:16 |
| заранее извиняюсь за кривое название. Нужно мне вот что: у меня есть n-полей в которые нужно вывести текст(Вопрос и варианты ответа), так вот подскажите что для этого лучше всего использовать? контрол, отрисовку текста, или что? просто самому в голову что то ничего не идет. |
| Автор: rrrFer 6.6.2008, 14:41 |
| vinter, SetDlgItemText(...) |
| Автор: vinter 6.6.2008, 14:56 |
| я знаю как устанавливать текст, что мне зать для вывода текста? |
| Автор: Earnest 6.6.2008, 15:14 |
| Ничего не поняла: раз ты знаешь, как вывести текст в поле, в чем вопрос? |
| Автор: vinter 6.6.2008, 15:30 |
| вопрос в том, что использовать? т.е допустим я будет использовать неактивный эдит, я даю ему фиксированный размер, и при выводе текста бОльшего, чем помещается в его видимую часть, то получается скролл эдита, что не есть гут. Т.е я хочу узнать куда мне выводить текст. Надеюсь понятно выразился. |
| Автор: Earnest 6.6.2008, 15:34 |
| Ну сделай текстовое поле ReadOnly - тогда и скролл у тебе будет, и редактировать нельзя... |
| Автор: vinter 6.6.2008, 15:47 |
| Earnest, а размер поля будет саморасширяться от наличия в нем тексста? |
| Автор: voov 6.6.2008, 18:04 |
| Размер поля изменяться не будет, просто на поле можно будет стать курсором и походить влево/вправо и текст будет прокручиваться. Я так понял, что это будет какой-то тест, т.е. серия вопросов с возможными вариантами ответа. В таком случае для вопроса я бы использовал Static контрол большого размера (достаточного, чтобы вместить текст самого большого вопроса) или как советова Earnest - текстовое поле с флагом ReadOnly, если место на форме ограничено. Для ответов возможны варианты. Если кол-во ответов всегда одинаковое, то можно использовать те же контролы, что и для вопроса. Если же нет - то какойто ListBox или ComboBox. |
| Автор: vinter 9.6.2008, 10:53 |
| т.е фактически мы приходим к тому, что кол-во символов в вопресе\ответе, будет ограниченным. Жаль, спасибо за ответы. |
| Автор: deniska 9.6.2008, 11:02 |
| можно ведь смотреть какой текст отображаешь(длину) его и динамически менять размер эдита если текст длиннее него. так что эдит вполне подходит |
| Автор: vinter 9.6.2008, 11:18 |
| хм, тогда как посчитать нужный размер эдита? т.е я имею количество символов в строке, и какой то шрифт. какие мои дальнейшие действия? что из шрифта, надо умножить на кол-во символов, чтобы получить размер эдита? |
| Автор: voov 9.6.2008, 11:42 |
| Я все-таки не вижу проблем с использованием эдита. Делаешь эдит большого размера, например, для вопроса размером с область отведенную под вопрос. Ставишь эдиту такие флаги: Auto HScroll = False Auto VScroll = True Vertical Scroll = True Multiline = True Read Only = True и все! Выводишь туда текст, пользователь его видит, но править не может. Если вдруг весь текст не поместился, то есть вертикальный скрол. Неужели пользователь не сможет воспользоваться прокруткой? Если же нужно чтобы обязательно весь текст был виден сразу, то тут нужно знать максимально возможную длину текста, иначе в какойто момент может просто не хватить места на форме. |
| Автор: deniska 9.6.2008, 12:51 |
| http://forum.vingrad.ru/forum/topic-212595.html я описывал самый общий способ определения размера текста в пикселях для любого контрола |
| Автор: Andrey44 11.6.2008, 07:13 |
| vinter, ну создай тоолтип в котором будешь отображать весь текст если его не видно весь. И при наведении на эдит показывай весь текст |
| Автор: Earnest 11.6.2008, 08:05 |
| Действительно, Andrey44 предложил хороший вариант. Это называется In-Place tooltip. Для его реализации нужно обрабатывать TTN_SHOW (переставляя тултип в нужное место). |
| Автор: vinter 11.6.2008, 10:11 |
| всем спасибо за ответы, воспользуюсь вашими советами |