Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.25;
Скачать: CL | DM;

Вниз

RichEdit   Найти похожие ветки 

 
Sergey-ZZZ ©   (2002-11-13 09:14) [0]

Подскажите, кто знает, как у RichEdit взять не только его Text, но и все служебные символы, т.е. то, что копируется при SaveToFile и LoadFromFile. Заранеее благодарен.


 
Song ©   (2002-11-13 09:15) [1]

А какие там служебные символы? Теги ртф?


 
Sergey-ZZZ ©   (2002-11-13 09:36) [2]

Ну да. Размер шрифта, цвет и прочая лобуда.


 
Song ©   (2002-11-13 09:38) [3]

Вообще Lines.Text и содержит rft если PlainText не уставновлено в True


 
Sergey-ZZZ ©   (2002-11-13 10:03) [4]

Фишка в чем... У меня PlainText=False. Я беру Editor.Lines.Text и кладу в базу данных, а когда извлекаю его опять в RichEdit, то он уже не форматированн. А мне нужен форматированный.


 
KoluChi ©   (2002-11-13 11:17) [5]

получить RTF строку:
var
S: String;
Stream: TStringStream;
begin
Stream := TStringStream.Create("");
RichEdit1.Lines.SaveToStream(Stream);
S := Stream.DataString;
Stream.Free();
end;


 
Sergey-ZZZ ©   (2002-11-13 11:45) [6]

Большое спасибо!!! Нужна еще помощь по извлечению из базы. Я сохраняю...
var
S: String;
Stream: TStringStream;
begin
Stream := TStringStream.Create("");
RichEdit1.Lines.SaveToStream(Stream);
S := Stream.DataString;
Stream.Free();
end;

а потом извлекаю

ADOQuery1.SQL.Text:="SELECT Text FROM Main WHERE ...";
ADOQuery1.Open;
Stream := TStringStream.Create("");
Stream:= VarToStr(ADOQuery1["Text"]);
RichEdit1.Lines.LoadFromStream(Stream);
ADOQuery1.Close;

И в RichEdit1 опять не форматированный текст :(((


 
KoluChi ©   (2002-11-13 11:54) [7]

Посмотри что сохранено в базе.
А извлечь можно так:
Stream := TStringStream.Create(VarToStr(ADOQuery1.FieldByName("Text").Value));
RichEdit1.Lines.LoadFromStream(Stream);
Stream.Free();
Должно работать.


 
Sergey-ZZZ ©   (2002-11-13 12:06) [8]

Хрен там. Не работает. Я думаю, что VarToStr форматирование и отбрасывает ????????


 
KoluChi ©   (2002-11-13 12:17) [9]

Stream := TStringStream.Create(VarToStr(ADOQuery1.FieldByName("Text").Value));
Stream.Position := 0;
RichEdit1.Lines.LoadFromStream(Stream);
Stream.Free();


 
KoluChi ©   (2002-11-13 12:24) [10]

Извини, что-то не то сказал.
В базе точно RTF строка? VarToStr тут не причем.
Посмотри
ShowMessage(VarToStr(ADOQuery1.FieldByName"Text").Value)));
- должен быть текст в RTF формате


 
KoluChi ©   (2002-11-13 12:25) [11]

А поле Text какого типа?


 
Sergey-ZZZ ©   (2002-11-13 12:32) [12]

Я храню MSSQL2000. До этого хранил в VarChar. Только что попробовал VarBinary - тот же результат. Форматирование не сохраняется.


 
KoluChi ©   (2002-11-13 13:26) [13]

VarChar - нормально. Приведи код записи и чтения из базы.
думаю разберемся, не все так сложно.


 
Sergey-ZZZ ©   (2002-11-13 15:21) [14]

procedure TMainForm.FileSaveAs(Sender: TObject);
var S: String;
Stream: TStringStream;
begin
if Memo1.Text="" then
begin
ShowMessage("Необходимо заполнить все поля");
end;
{Создаем и показываем форму сохранения файла}
If not Assigned(SaveForm) then
SaveForm :=TForm1.Create(Self);
SaveForm.ShowModal;
if SaveForm.ModalResult=mrOk then
begin
With DataModule1 do
begin

{Извлекаем и формируем названия сохраненных файлов на сервере}
ADOQuery1.SQL.Text:=
"SELECT FileName FROM Main WHERE FileName="""+SaveForm.Edit1.Text+"""";
ADOQuery1.Open;
if VarType(ADOQuery1.Fields[0].Value)=varString then
if MessageDlg(Format(sOverWrite, [SaveForm.Edit1.Text]),
mtConfirmation, mbYesNoCancel, 0) <> idYes then
begin
ADOQuery1.Close;
Exit;
end
else
ADOQuery1.Close
else ADOQuery1.Close;

Stream := TStringStream.Create("");
Editor.Lines.SaveToStream(Stream);
S := Stream.DataString;

{Устонавливаем название сохраненного файла }
SetFileName(SaveForm.Edit1.Text);
ADOQuery1.SQL.Text:=
"INSERT INTO Main([Text],FileName,UserName,CompName,DateOut,In_Out,Komu) "+
"Values(:Text,:FileName,:UserName,:CompName,:DateOut,:In_Out,:Komu)";
ADOQuery1.Parameters[0].Value := S; //Editor.Lines.Text;
ADOQuery1.Parameters[1].Value := SaveForm.Edit1.Text;
ADOQuery1.Parameters[2].Value := UserName;
ADOQuery1.Parameters[3].Value := CompName;
ADOQuery1.Parameters[4].Value := Date;
if CheckBox1.Checked then ADOQuery1.Parameters[5].Value := True
else ADOQuery1.Parameters[5].Value := False;
ADOQuery1.Parameters[6].Value := Memo1.Text;
ADOQuery1.ExecSQL;
End;
Editor.ReadOnly := true;
Stream.Free();
Editor.Modified := False;
SetModified(False);
end;
end;

{Открытие файла}
procedure TMainForm.PerformFileOpen(const AFileName: string);
Var
Stream: TStringStream;
begin
With DataModule1 do
begin
ADOQuery1.SQL.Text:="SELECT Text,Komu FROM Main WHERE FileName="""+OpenForm.Edit1.Text+"""";
ADOQuery1.Open;

Stream := TStringStream.Create(ADOQuery1.FieldByName("Text").Value);
Editor.Lines.LoadFromStream(Stream);
Stream.Free();
Memo1.Text:=(ADOQuery1["Komu"]);
ADOQuery1.Close;
end;
SetFileName(AFileName);
Editor.SetFocus;
Editor.Modified := False;
SetModified(False);
end;

Напиши свой адрес. Так будет проще общаться. И большое спасибо, что помогаешь. Sergey-ZZZ@mail.ru


 
KoluChi ©   (2002-11-13 16:15) [15]

Проследи логику - при записи вставляется новая строка.
А при чтении берется первая запись запроса. А кто сказал что она одна? "SELECT Text,Komu FROM Main WHERE"+OpenForm.Edit1.Text+""""
Посмотри в DBGrid что возвращает этот запрос. По-поводу моего адреса смотри почту.



Страницы: 1 вся ветка

Текущий архив: 2002.11.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
3-82648
h1ma
2002-11-06 06:25
2002.11.25
Как из бд вывести картинку в Image ?


3-82646
Ihor Osov'yak
2002-11-06 11:52
2002.11.25
Хранимые проц в аксес2000


14-82973
Drova
2002-11-06 23:11
2002.11.25
Что такое WINS ?


14-82922
irmantukas
2002-11-05 01:32
2002.11.25
Delphi 7


3-82659
Z-Yuri
2002-11-01 15:13
2002.11.25
Подходы к разработке БД-II. Где о них можно почитать.