OberonCore https://forum.oberoncore.ru/ |
|
Как проще менять шрифты при выводе в документ? https://forum.oberoncore.ru/viewtopic.php?f=35&t=3046 |
Страница 1 из 1 |
Автор: | Хохулин Олег [ Воскресенье, 05 Декабрь, 2010 20:48 ] |
Заголовок сообщения: | Как проще менять шрифты при выводе в документ? |
Пожалуйста, подскажите на примере, как можно писать текст в документ, сменяя программно шрифты. |
Автор: | Info21 [ Воскресенье, 05 Декабрь, 2010 21:40 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Код: MODULE x;
IMPORT T := TextModels, F := Fonts, Views, TextViews; PROCEDURE МеняемШрифт; VAR t: T.Model; (* текст *) f, f1: F.Font; a, a1: T.Attributes; (* это будут новые атрибуты текста *) BEGIN t := T.dir.NewFromString('Волгоград Сталинград Царицын'); (* новый текстовый объект (модель), шрифт по умолчанию *) f := F.dir.Default(); (* можно взять шрифт по умолчанию, а можно указать в лоб: *) f1 := F.dir.This( 'Verdana', 20*F.point, {F.italic, F.underline}, F.bold ); a := T.dir.attr; (* берем атрибуты по умолчанию *) a := T.NewFont( a, f1 ); (* правим атрибуты, меняя там шрифт на новый *) t.SetAttr( 10, 20, a); (* меняем шрифт в позициях с 10 по 20-1 *) (* смотрим, что получилось: *) Views.OpenView( TextViews.dir.New( t ) ); END МеняемШрифт; BEGIN МеняемШрифт END x. |
Автор: | Хохулин Олег [ Понедельник, 06 Декабрь, 2010 21:00 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Во-первых не хватает красной строки MODULE x; IMPORT T := TextModels, F := Fonts, Views, TextViews; PROCEDURE МеняемШрифт; VAR t: T.Model; (* текст *) f, f1: F.Font; a, a1: T.Attributes; (* это будут новые атрибуты текста *) BEGIN t := T.dir.NewFromString('Волгоград Сталинград Царицын'); (* новый текстовый объект (модель), шрифт по умолчанию *) f := F.dir.Default(); (* можно взять шрифт по умолчанию, а можно указать в лоб: *) f1 := F.dir.This( 'Verdana', 20*F.point, {F.italic, F.underline}, F.bold ); NEW(a); a := T.dir.attr; (* берем атрибуты по умолчанию *) a := T.NewFont( a, f1 ); (* правим атрибуты, меняя там шрифт на новый *) t.SetAttr( 10, 20, a); (* меняем шрифт в позициях с 10 по 20-1 *) (* смотрим, что получилось: *) Views.OpenView( TextViews.dir.New( t ) ); END МеняемШрифт; BEGIN МеняемШрифт END x. А кроме того еще чего-то не хватает, потому что в синей строке вылазит ТРАП 22 (нарушено предусловие) |
Автор: | Хохулин Олег [ Вторник, 07 Декабрь, 2010 00:14 ] | ||
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? | ||
Я тоже не дурака валяю: Если копирую текст из форума один к одному, получаю ошибки (см. screenshot). Очень хотелось бы разобраться, в чем дело. Что вы думаете по этому поводу?
|
Автор: | Евгений Темиргалеев [ Вторник, 07 Декабрь, 2010 16:07 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Хохулин Олег писал(а): Что вы думаете по этому поводу? Какой Вы используете Блэкбокс?
|
Автор: | Хохулин Олег [ Вторник, 07 Декабрь, 2010 16:21 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Евгений Темиргалеев писал(а): Хохулин Олег писал(а): Что вы думаете по этому поводу? Какой Вы используете Блэкбокс?использовал школьный, сказал сейчас заново скачал теперь пример работает без НОВЫЙ (a);, но все равно вылетает трапом на строке t.SetAttr( 10, 20, a); ТРАП 22 (нарушено предусловие) P.S. И возникает ощущение, что в некоторых ситуациях модуль не выгружается из памяти пока не перезапущу КП. Даже если может и должен. Какие-то мистические ощущения. |
Автор: | Info21 [ Вторник, 07 Декабрь, 2010 16:53 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Хохулин Олег писал(а): Я тоже не Всяко бывает. Начинающие такие вещи иногда делают, что и вообразить невозможно. Хохулин Олег писал(а): получаю ошибки (см. screenshot). Очень хотелось бы разобраться, в чем дело. Что вы думаете по этому поводу? Думать особо пока не нужно: не узнается идентификатор МеняемШрифт. То есть парсер не узнает буковки как допустимые в идентификаторе буковки. Попытался вставить Правка, Вставка специальная... , Текст юникод -- воспроизвелись в точности две ошибки с картинки. И впрямь -- определение языка разрешает в идентификаторах только буквы из диапазона Latin-1 (где-то до 255; в сборках от И-21 с учетом русификации). А юникодовская кириллица сидит на бес знает каких кодах выше 255. Там еще есть опция Простой текст. Должна работать. Но по умолчанию (Ctrl+V) у меня вставляется не юникод, и сразу компилируется без ошибок. |
Автор: | Илья Ермаков [ Вторник, 07 Декабрь, 2010 17:30 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Цитата: P.S. И возникает ощущение, что в некоторых ситуациях модуль не выгружается из памяти пока не перезапущу КП. Даже если может и должен. Какие-то мистические ощущения. Такое бывает, когда к модулю привязана форма и открыта на экране. Тогда модуль, выгрузившись, сразу же загружается в память (правда, последняя версия из кодового файла). |
Автор: | Евгений Темиргалеев [ Вторник, 07 Декабрь, 2010 18:01 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Info21 писал(а): То есть парсер не узнает буковки как допустимые в идентификаторе буковки. В качестве уточнения: все литеры с кодами выше 255 компилятор вчистую игнорирует. И те идентификаторы он не видит, в прямом смысле.
... И впрямь -- определение языка разрешает в идентификаторах только буквы из диапазона Latin-1 (где-то до 255; в сборках от И-21 с учетом русификации). А юникодовская кириллица сидит на бес знает каких кодах выше 255. |
Автор: | Хохулин Олег [ Вторник, 07 Декабрь, 2010 20:37 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Info21 писал(а): Но по умолчанию (Ctrl+V) у меня вставляется не юникод, и сразу компилируется без ошибок. Спасибо, все заработало, как Вы и сказали. А можно наводку? Где надо исправить настройки по умолчанию, чтобы и у меня по (Ctrl+V) вставлялся не юникод? (Распаковал из скачаного дистрибутива школьную версию сегодня в обед в отдельную папку и ничего нигде не менял, но ведь вставляло-то юникод?) |
Автор: | Info21 [ Вторник, 07 Декабрь, 2010 21:07 ] |
Заголовок сообщения: | Re: Как проще менять шрифты при выводе в документ? |
Хохулин Олег писал(а): Info21 писал(а): Но по умолчанию (Ctrl+V) у меня вставляется не юникод, и сразу компилируется без ошибок. Спасибо, все заработало, как Вы и сказали.Хохулин Олег писал(а): Info21 писал(а): А можно наводку? Где надо исправить настройки по умолчанию, чтобы и у меня по (Ctrl+V) вставлялся не юникод? (Распаковал из скачаного дистрибутива школьную версию сегодня в обед в отдельную папку и ничего нигде не менял, но ведь вставляло-то юникод?) Ctrl+V задаются в меню: Инфо, Меню, откроется окошечко, там кликнуть по гиперссылке System, откроется еще окошко (документ System/Rsrc/Menus.odc). В нём описана структура всех меню -- или команды включения (INCLUDE) дополнительных описаний из файлов ***/Rsrc/Menus.odc указываемых после INCLUDE подсистем). Найти (в нижней половине экрана) описание меню Правка, там строку, где в первой колонке "Вставить". После белого символа табуляции стоит "V" -- оно и задаёт для этой команды Ctrl+V. Подробней см. Справка для учителя, первая гиперссылка (Меню...), и там найти гиперссылку Настройка меню мелким шрифтом; открыть и читать. Почему у Вас вставляется юникодов -- не знаю. Возможно, зависит от конфигурации ОС-браузер: в буфере обмена копируемые данные могут храниться в нескольких форматах. Возможно, система их просто не сортирует, а ББ берет первый боле-мене подходящий. Гипотеза такая. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |