Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

RichEdit [D5, MSSQL]


ProgrammerDelphi ©   (2002-02-12 10:17:00) 

Помогите, пожалуйста, разрешить следующую проблему:
Вот у меня имеются две формы. На первой форме frm_main имеются компоненты доступа к
БД MS SQL Server через ADO-соединение. Данные по одному полю хранятся в виде BLOB
(Image-MS SQL). И мне нужно форматированный текст записать туда и читать тоже
форматированный текст. Не получается, только записывается и читается неформатированный
текст. На второй форме frmEdit_Tip расположены компоненты выбора атрибутов шрифта
и форматирования текста. С помощью их на этой форме в окне REdit_Content
простого компонента TRichEdit (не TDBRichEdit) мне удалось сформатировать текст, но
не удаётся записать в таком красивом виде или считать.

=========Кусок кода в кнопке формы frm_main
//Разрешить читать из БД инфо в формате rtf(rich-text format)
frmEdit_Tip.REdit_Content.PlainText:=false;

frmEdit_Tip.REdit_Content.Text:=DataModule1.ADOQuery1.FieldByName("Content").Value;

==========Результат отображения в форме frmEdit_Tip
{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fnil MS Sans Serif;}{\f1\froman\fcharset2
Symbol;}{\f2\fswiss\fcharset1 MS Sans Serif;}{\f3\fswiss\fcharset204 MS Sans
Serif;}{\f4\fswiss\fcharset1 MS Sans Serif;}}
{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green0\blue255;}
\deflang1033\pard\plain\f2\fs28\cf2\b\i\ul \"cf\"f0\"ee\"e1\"e0
\par \"f4\"ee\"f0\"ec\"e0\"f2\"e0
\par RTF
\par \plain\lang1049\f3\fs16\cf1\b\i \"ef\"f0\"ee\"e2\"e5\"f0\"ea\"e0\plain\f4\fs16
\par }
============кусок кода на второй форме после нажатия кнопки "Запомнить"
begin
spUpdate_Images.Prepared:=false;
//Установка значений входных параметров процедуры

//Разрешить записывать в БД инфо в формате rtf(rich-text format)
REdit_Content.PlainText:=false;

spUpdate_Images.Parameters.ParamByName("@Content").Value:=REdit_Content.Lines.Text;
//Связывание параметров

spUpdate_Images.Prepared:=true;
//Выполнение хранимой процедуры
spUpdate_Images.ExecProc;

//Обновление данных
frmMain.ADOQuery1.Requery;

Close;
end;


=========================================================
Я уже замучился, почитал книги Шумакова, Архангельского. Там никаких секретов и
хитростей с примерами не нашёл. И пытался в help"e Delphi 5 найти примеры и помощь,
фигню получил. Читаю на вашем форуме, и что-то похожее решение наверно есть. Но не
знаю, каким образом извлечь и записать информацию в виде rtf.

Именно какая-то ошибка в фрагменте кода, но я сам не могу найти.
spUpdate_Images.Parameters.ParamByName("@Content").Value:=REdit_Content.Lines.Text;
То есть более правильно надо записать, ну типа REdit_Content.Stream или ...???????

Может быть использовать LoadFromStream?
Заранее буду благодарен за ответы


TSV   (2002-02-13 10:24:00) [1]

В MS SQL Server для текста надо использовать тип text (ntext), а не image.


Gregory   (2002-02-13 08:57:00) [2]

Вся беда в том что это компонент может распознать rtf-кую природу данного текста, только при выполнении методов Lines.LoadFromFile и Lines.LoadFromStream, причем в первом случае он опирается на расширение файла, а во втором на значение PlainText (можешь сам посмотреть исходники компонента в Source\Vcl\comctrls.pas). А все другие Linesовые методы, он осуществляет как с обычным текстом ...

Вариант решения: Перед загрузкой сохраняй данные во временный файл, с расширением rtf. Для загрузки используй Lines.LoadFromFile.

С сохранением проблем быть не должно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо