RTFTextControl и Report
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
RTFTextControl и Report
Что то не могу разобраться... вот надо в расчетных листках выводить некий общий текст (он хранится в файле Мемо в поле Техt тип MEMO) и в отчет выводится через контрол "TEXT,AT(0,177,7750,417),USE(Mem:Text),RTF(TEXT:Field)" и некий индивидуальный текст для каждого лиц. счета. Понятно, что простой очевидный вариант - добавить еще один детайл который выводить, если индивид. текст не пустой. Но, наверно культурнее бы это сделать через RTFTextControl и в дальнейшем использовать метод FindAndReplace.
Однако... а как RTFTextControl добавить в REPORT ? В Window и Browse, например вижу его в списке контролей, а в Report-е нет ! Как же им воспользоваться в отчете ?
(CW 9.1)
Однако... а как RTFTextControl добавить в REPORT ? В Window и Browse, например вижу его в списке контролей, а в Report-е нет ! Как же им воспользоваться в отчете ?
(CW 9.1)
- ingasoftplus
- Ветеран
- Сообщения: 426
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 90 раз
- Поблагодарили: 5 раз
RTFTextControl и Report
Так вроде... Ставишь обычный ТЕКСТ контрол в репорт, и у него включаешь флаг RTF
Printing Multi-line Text with Word-wrap
A multi-line text control can print a long string (such as a MEMO), automatically word-wrapping and printing as many lines as the MEMO’s contents requires.
Select the TEXT tool from the Controls Toolbox, and DRAG and DROP to the band where you want to place the control.
The center of the crosshair positions the upper left corner of the control.
The Report Designer places a TEXT control in the report structure. Resize the text box by using the mouse to drag its handles.
CLICK the text control and choose Properties from the popup menu to open the Properties Pad for the Text coontrol.
Enter the name of the variable in the Use property.
Set the Resize property to TRUE.
You can optionally display Rich Text Format content by setting the RTF property to TRUE (UseRichTextFormat).
At run-time, the text expands downward, expanding the detail if necessary, to contain the entire text of the memo! If necessary, the text flows onto the following page. The RESIZE attribute only adjusts the height of the TEXT and the DETAIL.
RTFTextControl и Report
Так это у меня и сделано. Мне нужно в него динамически "подмешивать" доп. текст, индивидуальный для каждого лиц. счета. Для этого вроде как есть метод FindAndReplace,но чтобы им воспользоваться нужен еще доп. контрол RTFTextControl, вот его то и не пойму как добавить в Report.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
RTFTextControl и Report
Я извиняюсь, что может быть не в тему: а не проще сначала "подмешивать" текст, а потом выводить
строку любым контролом без заморочек с RTF и т.д. Вот пример самой простой процедуры замены текста:
строку любым контролом без заморочек с RTF и т.д. Вот пример самой простой процедуры замены текста:
Код: Выделить всё
Map
ReplaceText(*String,String,String)
end
! --- Возов
MyString = "Текст произвольной длины, который написал Вася, когда хотел писать"
ReplaceText(MyString,'Вася','Редиска')
Message(MyString)
ReplaceText PROCEDURE (Stroka_,Template_,Field_)
Loc:LastIndex LONG
Loc:FindIndex LONG
CODE
Loc:LastIndex = 1
Loop
Loc:FindIndex = InString(Clip(Template_),Clip(Stroka_),1,Loc:LastIndex)
If Loc:FindIndex and ((Loc:FindIndex + Len(Clip(Template_))) < Size(Stroka_))
Stroka_ = Stroka_[1:(Loc:FindIndex - 1)] & Clip(Field_) & |
Stroka_[(Loc:FindIndex + Len(Clip(Template_))):(Size(Stroka_))]
Loc:LastIndex = Loc:FindIndex + Len(Clip(Field_))
else
Break
end
end
За теми кто отстал - не возвращаться. (С) Кодекс
RTFTextControl и Report
Так разве в случае с RTF такая замена пройдет ? Текст ведь приходится хранить не в STRING, а в MEMO ?
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
RTFTextControl и Report
Какая разница ? RTF - это обычный текст (открой в блокноте любой RTF файл).
Можно либо MEMO переписать в строку для обработки и последующей печати,
либо заменить первый параметр на *? и передавать туда MEMO поле напрямую.
Я привел этот код как пример. В общем случае, при работе с большими строками
непредсказуемой длины (каковыми и являются файлы и тексты RTF) лучше перейти
на работу с указателями и динамическим наращиванием длины строки результата.
(я это показывал в примере: http://forum.clarionlife.net/phpbb/view ... f=1&t=3342)
С другой стороны - если тексты ты собираешься печатать в обычном REPORT, значит
больше листа A4 с текстом у тебя быть не может. Объявляй строку на 64K - загоняй
в нее текст из MEMO, обрабатывай замены процедурой как она есть и печатай. Все.
Можно либо MEMO переписать в строку для обработки и последующей печати,
либо заменить первый параметр на *? и передавать туда MEMO поле напрямую.
Я привел этот код как пример. В общем случае, при работе с большими строками
непредсказуемой длины (каковыми и являются файлы и тексты RTF) лучше перейти
на работу с указателями и динамическим наращиванием длины строки результата.
(я это показывал в примере: http://forum.clarionlife.net/phpbb/view ... f=1&t=3342)
С другой стороны - если тексты ты собираешься печатать в обычном REPORT, значит
больше листа A4 с текстом у тебя быть не может. Объявляй строку на 64K - загоняй
в нее текст из MEMO, обрабатывай замены процедурой как она есть и печатай. Все.
За теми кто отстал - не возвращаться. (С) Кодекс
RTFTextControl и Report
А как можно используя RTF в отчете установить на некоторые участки текста жирный шрифт? Пробовал форматировать в соответствии с описанием RTF, что-то типа
В RTF на окне это работает, в RTF на отчете почему-то нет.
Код: Выделить всё
Info = '{{\rtf1\ansi\deff0' & |
'{{\colortbl\red0\green0\blue0;\red48\green146\blue242;}' & |
' Какой-то текст {{\cf1 \b Внимание}. Какой-то текст.}'
-
- ✯ Ветеран ✯
- Сообщения: 4987
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
RTFTextControl и Report
Не работает только жирный шрифт? Или любое форматирование не работает?
Вот работающий у меня в отчёте кусок:
По-моему, здесь шрифт наклонный, не жирный. Если надо посмотрю.
И, сдаётся мне, если подцепить на экране RTF-шаблон, то можно увидеть как должен выглядеть RTF-строка.
Вот работающий у меня в отчёте кусок:
Код: Выделить всё
LOC:ISP = '{{\rtf1\ansi\ansicpg1251\deff0\deflang1049{{\fonttbl{{\f0\fnil\fcharset204 Times New Roman;}{{\f1\fnil\fcharset0 Times New Roman;}}{{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sl240\slmult1\ul\i\f0\fs16\Закреплены за ПУ:\ulnone\i0\par\par' & clip(ZZZ.A1) & '\par\par' & |
'\lang1049\ul\i\f0\fs16\С других ПУ:\ulnone\i0\par\par' & clip(ZZZ.A2) & '}'
И, сдаётся мне, если подцепить на экране RTF-шаблон, то можно увидеть как должен выглядеть RTF-строка.
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 4987
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
RTFTextControl и Report
Тэг "\b" должен быть два раза в строке, начало жирности и её конец. Вроде как.
We are hard at work… for you.
RTFTextControl и Report
Не работает. В отчет идет все содержимое. Не пойму почему так.
- Вложения
-
- Снимок.PNG (7.95 КБ) 2013 просмотров
RTFTextControl и Report
А прошу прощения, работает!
До этого текст отправлял на RTF через prop:text. Так нельзя. Надо через use переменную.
Спасибо!
До этого текст отправлял на RTF через prop:text. Так нельзя. Надо через use переменную.
Спасибо!