Форум: "Основная";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c