Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 819
от 24.05.2007, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 469, Экспертов: 86
В номере:Вопросов: 3, Ответов: 7


Вопрос № 87500: Здравствуйте, Эксперты! Проблема следующая: Каким образом на форме отобразить текст в формате rtf. Когда я пытаюсь загрузить файл в компонент(TRichEdit). В параметр Lines, то в окне выбора файла из доступный расширений только txt и тому подоб...
Вопрос № 87601: Здраствуйте. Подскажите, как разделить строку, зная что строка выглядит примерно так: "hello | world". В масив записать x[1]='hello' x[2]='world'; (правда строка постоянно разного размера)....
Вопрос № 87604: Здравствуйте, Эксперты! Подскажите как можно отобразить на форме текст с картинками. Раньше я размещал текстовые поля в перемешку с картинками, ставил в форме автопрокрутку и обрабатывал рзмеры и положение всех элементов при изменении размеров фо...

Вопрос № 87.500
Здравствуйте, Эксперты!
Проблема следующая:
Каким образом на форме отобразить текст в формате rtf. Когда я пытаюсь загрузить файл в компонент(TRichEdit). В параметр Lines, то в окне выбора файла из доступный расширений только txt и тому подобное, делаю "все файлы", тогда при открытии выдает ошибку, что не может открыть. Дальше гружу этот же rtf в свойство Text, вначале также, но когда делаю "все файлы" и гружу, то файл загружается. В окне отображается весь синтаксис rtf. Дальше нажимаю ОК. В компоненте отображается форматированный rtf текст. Если снова открыть св. Text то там обычный текст, без синтаксиса rtf. Если запустить программу то в компоненте отображается простой текст. После завершения программы в режиме проектирования теперь тоже отображается простой текст.

В чем проблема? Почему компонент называется Rich а rtf грузить не хочет.

Решением могло бы быть: Грузить файл после запуска приложения, но мне надо распространять программу одним екзешником.

Какие можете предложить другие варианты, как отобразить форматированный текст. Может другим компонентом? Каким?
Или как засунуть этот файл в экзешник и грузить его оттуда при запуске?

Короче предложите любой способ отобразить форматированный текст(чтоб красиво выглядело) на форме, чтобы делалось это быстро - не клеить кучу лабелов.

Borland Delphi 7
Отправлен: 18.05.2007, 14:52
Вопрос задал: Patriotix-N (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Вадим Викторович Витомский
Здравствуйте, Patriotix-N!
Я пользуюсь RxRichEdit из библиотеки RxLib.
Код, приведенный в приложении, у меня работает.
Если не получится найти библиотеку, пишите на cybersoft@rambler.ru - вышлю по почте.

Приложение:

Ответ отправил: Вадим Викторович Витомский (статус: 8-ой класс)
Ответ отправлен: 18.05.2007, 16:36
Оценка за ответ: 4
Комментарий оценки:
Не понял что за компонент. Он вшивает файл в екзешник, или что?
Надо же пояснить!

Отвечает: Gh0stik
Здравствуйте, Patriotix-N!

Рекомендую Вам прицепить Ваш rtf-файл как ресурс.

Как это сделать:
Создаем файл ресурса в котором хранится исходный rtf-файл.
Создаем текстовый файл допустим rtf.rc
Который содержит например такую строку:
RTFDOC RCDATA "data.rtf"
RTFDOC - название нашего ресурса, которое мы будем использовать в программе.
data.rtf - файл который мы упаковываем в ресурс.
Далее компилируем сам ресурс путем такой команды: brcc32.exe rtf.rc
Должен создастся файл rtf.res

Подключаем ресурс к проекту путем приписывания такой строки:
............
implementation
{$R rtf.res}
............


После компиляции проекта файл ресурса будет "вшит" в него.
Чтобы "достать" этот файл и вставить в TRichEdit - достаточно использовать такую процедуру:

procedure TForm1.Button2Click(Sender: TObject);
var rs: TResourceStream;
begin
rs:=TResourceStream.Create(hinstance, 'RTFDOC', RT_RCDATA);
try
Richedit1.PlainText := False;
Richedit1.Lines.LoadFromStream(rs);
finally
rs.Free;
end;
end;


Полный код проекта смотрите в прикрепленном файле.

Good Luck!!!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 18.05.2007, 18:26
Оценка за ответ: 5
Комментарий оценки:
Отлично! Вообще давно хотел научиться прикреплять разные файлы к проекту.


Вопрос № 87.601
Здраствуйте.

Подскажите, как разделить строку, зная что строка выглядит примерно так: "hello | world". В масив записать x[1]='hello' x[2]='world'; (правда строка постоянно разного размера).
Отправлен: 19.05.2007, 10:43
Вопрос задал: Alxx (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gh0stik
Здравствуйте, Alxx!

Вам достаточно использовать стандартные функции обработки строк - copy(), delete(), pos(), length().

И тогда код для получения результата будет такой:
............
var x:array [1..2] of string;
s:string;
begin
s:='hello | world';
x[1]:=copy(s,1,pos(' | ',s)-1);
delete(s,1,pos(' | ',s)-1+length(' | '));
x[2]:=s;
............
end;


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 19.05.2007, 10:57

Отвечает: Gsa
Здравствуйте, Alxx!

Используй IsDelimiter и SubString
Ответ отправил: Gsa (статус: 5-ый класс)
Ответ отправлен: 19.05.2007, 12:19

Отвечает: Coupler
Здравствуйте, Alxx!
Посмотрите немного доработанную мной функцию explode из базы статей delphiworld (раздел синтаксис-текст и строки). В примере все полученные слова сохраняются в динамическом массиве. Данное решение подходит для строки любой длины.

Приложение:

Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 19.05.2007, 15:42

Отвечает: Примак Руслан Николаевич
Здравствуйте, Alxx!
Подобный вопрос уже задавался, там дело касалось значений. Предложу немного другой подход к решению вашей задаче. Поскольку массив у вас строковый, то тут вполне удобно применить TStrings, в частности TStringList.

Приложение:

Ответ отправил: Примак Руслан Николаевич (статус: 1-ый класс)
Ответ отправлен: 21.05.2007, 14:36


Вопрос № 87.604
Здравствуйте, Эксперты!
Подскажите как можно отобразить на форме текст с картинками. Раньше я размещал текстовые поля в перемешку с картинками, ставил в форме автопрокрутку и обрабатывал рзмеры и положение всех элементов при изменении размеров формы. Это очень неудобно! Можно ли с помощью какого-нибудь компонента загрузить текст с картинками, чтобы он сам изменыл размер и имел прокрутку?
Есть ли такой компонент, чтобы загрузить документы формата Ms Word, с картинками, формулами и т.д? И отображать все это на форме.
HTML вариант тоже занимает много времени, поэтому не подходит. А мне надо быстро написать текст, вставить картинки и разместить на форме.
Отправлен: 19.05.2007, 11:08
Вопрос задал: Patriotix-N (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Dragon
Здравствуйте, Patriotix-N!

можно например использовать TOleContainer и загружать в него документ word с картинками, формулами и т.д.
Ответ отправил: Dragon (статус: 2-ой класс)
Ответ отправлен: 19.05.2007, 11:47


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное