Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CRichEditCtrl вывод текста колонками


Автор: GSasha 13.1.2010, 00:26
Добрый вечер уважаемые программисты. Стоит задача вывода текста в CRichEditCtrl в табличной форме, должны быть колонки, а линии поочередно подсвечены (как в CListCtrl). Направьте, пожалуйста, на путь истинный, это мой первый опыт работы с данным контролом.  smile 

Автор: Albor 13.1.2010, 14:16
Вставляй в текст строки символы '\t' для разделения полей таблицы, и '\r' '\n' для перехода на следующую строку.

Автор: GSasha 13.1.2010, 16:34
Вариант с табами не проходит, так как слова могут быть разной длины, а также при смене шрифта все форматирование сьежает...

Автор: Albor 13.1.2010, 16:55
Ну, тогда CListCtrl. А сделать аналог из CRichEdit - нужно хорошо постараться. Вообще-то, какой вопрос, такой и ответ. Строки, что, должны выводиться с разным форматом текста? Если да, то ничего приличного не получится. Строки текста, я так понял, будут добавляться как в список (всмысле - заранее, до вывода текста, нельзя рассчитать размеры?). Если строк будет не очень много, то можно пересчитывать поля вывода и переписывать весь текст в контроле, либо заранее определиться с максимальным размером полей, что, скорее всего, проще, надёжнее и легче для глаз пользователя, чем постоянно прыгающий размер колонок.

Автор: GSasha 13.1.2010, 17:20
Спасибо за ответ, я Вас понял. Сорри за невнятный вопрос. Меня интересует именно заранее заданные максимальные поля для вывода текста в виде колонок (таблица).

Автор: Albor 13.1.2010, 17:44
Навскидку: 
1. Наследуемся от CRichEdit;
2. Организуем структуру данных, содержащую строку текста в виде подстрок по количеству колонок;
3. Используем моноширинный шрифт, если не хочется использовать табуляцию;
4. Выравниваем длину подстрок в соответствии с максимальным размером поля, добавляя пробелы, либо, обрезая подстроку.
5. Если подстроки будут обрезаться, добавляем контейнер для хранения структур из пункта 1, где подстроки будут храниться в натуральном виде.
6. Работаем над вышеперечисленным, исправляя по ходу возникшие проблемы.

Автор: GSasha 13.1.2010, 22:11
Цитата(Albor @  13.1.2010,  17:44 Найти цитируемый пост)
3. Используем моноширинный шрифт, если не хочется использовать табуляцию;

Этот пункт не подходит, шрифт изменяется.
Пробую решить с помощью табстопов.

Автор: GSasha 14.1.2010, 14:05
Подскажите, как перевести высоту шрифта в твипсах (CHARFORMAT yHeight) в высоту шрифта LOGFONT lfHeight?

Автор: Albor 14.1.2010, 14:25
по-моему нужно разделить на 20

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)