![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RichEdit [D5]
Sergey-ZZZ © (2002-11-13 09:14:00)Подскажите, кто знает, как у RichEdit взять не только его Text, но и все служебные символы, т.е. то, что копируется при SaveToFile и LoadFromFile. Заранеее благодарен.
KoluChi (2002-11-13 16:15:00) [1]Проследи логику - при записи вставляется новая строка.
А при чтении берется первая запись запроса. А кто сказал что она одна? "SELECT Text,Komu FROM Main WHERE"+OpenForm.Edit1.Text+""""
Посмотри в DBGrid что возвращает этот запрос. По-поводу моего адреса смотри почту.
Sergey-ZZZ (2002-11-13 15:21:00) [2]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 13:26:00) [3]VarChar - нормально. Приведи код записи и чтения из базы.
думаю разберемся, не все так сложно.
Sergey-ZZZ (2002-11-13 12:32:00) [4]Я храню MSSQL2000. До этого хранил в VarChar. Только что попробовал VarBinary - тот же результат. Форматирование не сохраняется.
KoluChi (2002-11-13 12:25:00) [5]А поле Text какого типа?
KoluChi (2002-11-13 12:24:00) [6]Извини, что-то не то сказал.
В базе точно RTF строка? VarToStr тут не причем.
Посмотри
ShowMessage(VarToStr(ADOQuery1.FieldByName"Text").Value)));
- должен быть текст в RTF формате
KoluChi (2002-11-13 12:17:00) [7]
Stream := TStringStream.Create(VarToStr(ADOQuery1.FieldByName("Text").Value));
Stream.Position := 0;
RichEdit1.Lines.LoadFromStream(Stream);
Stream.Free();
Sergey-ZZZ (2002-11-13 12:06:00) [8]Хрен там. Не работает. Я думаю, что VarToStr форматирование и отбрасывает ????????
KoluChi (2002-11-13 11:54:00) [9]Посмотри что сохранено в базе.
А извлечь можно так:
Stream := TStringStream.Create(VarToStr(ADOQuery1.FieldByName("Text").Value));
RichEdit1.Lines.LoadFromStream(Stream);
Stream.Free();
Должно работать.
Sergey-ZZZ (2002-11-13 11:45:00) [10]Большое спасибо!!! Нужна еще помощь по извлечению из базы. Я сохраняю...
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:17:00) [11]получить 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 10:03:00) [12]Фишка в чем... У меня PlainText=False. Я беру Editor.Lines.Text и кладу в базу данных, а когда извлекаю его опять в RichEdit, то он уже не форматированн. А мне нужен форматированный.
Song (2002-11-13 09:38:00) [13]Вообще Lines.Text и содержит rft если PlainText не уставновлено в True
Sergey-ZZZ (2002-11-13 09:36:00) [14]Ну да. Размер шрифта, цвет и прочая лобуда.
Song (2002-11-13 09:15:00) [15]А какие там служебные символы? Теги ртф?