![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблемы с RxRichEdit
sdaf © (2007-11-25 20:30:00)Здравствуйте.
У меня есть два RXRichEdit в одном есть текст и картинка(tbitmap), как скопировать из одного все содержимое в другой - пустой RXRichEdit?
Пробовал по разному копируеться только текст, а картинка нет.
Как это можно сделать? Помогите пожалуйста!
sdaf (2007-11-28 19:23:00) [1]надумал вот что, может не самый подходящий способ зато не используем буфер. Создать временный text.rtf в него записать, и из него считать во второй RXRichEdit вот примерно так,
RxRichEdit1.Lines.SaveToFile('c:\text.rtf');
RxRichEdit1.Lines.LoadFromFile('c:\text.rtf');
RxRichEdit1.Lines.Add(' ');
вот примерно вот так
Gydvin (2007-11-28 06:08:00) [2]
> ну так можно пользоваться таким кодомRxRichEdit1.SetSelection(0,
> RE.GetTextLen,True);RxRichEdit1.CopyToClipboard;RxRichEdit2.
> PasteFromClipboard;RxRichEdit1.clear;пользоваться или это
> смертельно и нада искать другие пути.
Вы сами ответили на свой вопрос
> Таким кодом я затираю буфер наврно, а если у меня там какая
> нибуть нужная инфа?
Вообще буфер обмена, как таковой, предназначен для использования его пользователем, либо программой в автоматическом режиме, но только с ведома пользователя (иногда нужны оказывается такие программы). Но это не в вашем случае.
Вердикт: Изыскивать другие методы.
sdaf (2007-11-27 23:03:00) [3]ну так можно пользоваться таким кодом
RxRichEdit1.SetSelection(0,RE.GetTextLen,True);
RxRichEdit1.CopyToClipboard;
RxRichEdit2.PasteFromClipboard;
RxRichEdit1.clear;
пользоваться или это смертельно и нада искать другие пути. у меня возник второй вопрос. Таким кодом я затираю буфер наврно, а если у меня там какая нибуть нужная инфа?
можно как нибуть их сохранить чтобы они не улитучились в никуда?
Gydvin (2007-11-27 14:47:00) [4]
> ЮЮ © (27.11.07 05:59) [11]
В сабже не говорится о части - говорится о всем содержимом...
Leonid Troyanovsky (2007-11-27 09:05:00) [5]
> ЮЮ © (27.11.07 05:59) [11]
> Cогласен, но другого способа переноса части форматированного
> текста с картинками я в свое время не нашёл. :(
Форматированный текст переносится путем EM_STREAMIN|OUT.
Насчет картинок не знаю, наверное, нужно cмотреть какие
возможности представляет COM интерфейс RICHEDIT 2 и 3 версий.
Подробности можно найти на http://home.att.net/~robertdunn/Yacs.html
--
Regards, LVT.
ЮЮ (2007-11-27 05:59:00) [6]> Уважаемый, не подумайте, что я просто так придируюсь. Но
> за такую реализацию переноса инфы из - в . Вы заслуживаете
> теплого места в Ленге, и благодарных пользователей в качестве
> чертей с вилами...
Cогласен, но другого способа переноса частиформатированного текста с картинками я в свое время не нашёл. :(
RxRichEdit1.CopyToClipboard;
RxRichEdit2.PasteFromClipboard;
CopyToClipboard выполняется "ассинхронно" и в PasteFromClipboard гарантированна ошибка "Невозможно открыть буфер обмена". (Самый простой способ воспроизвести ситуацию - загрузить два экземпляра Delphi, и во втором запустить приложение на выполнение).
Поэтому следует PasteFromClipboard "обернуть" в try ... except и Applecation.ProcessMassege не помешает.
Gydvin (2007-11-26 22:15:00) [7]
> sdaf
Уважаемый, не подумайте, что я просто так придируюсь. Но за такую реализацию переноса инфы из - в . Вы заслуживаете теплого места в Ленге, и благодарных пользователей в качестве чертей с вилами...
sdaf (2007-11-26 21:36:00) [8]Воооо вот так работает))!!!
RxRichEdit1.SetSelection(0,RE.GetTextLen,True);
RxRichEdit1.CopyToClipboard;
RxRichEdit2.PasteFromClipboard;
RxRichEdit1.clear;
Спасибо всем за предложенные варианты
sdaf (2007-11-26 21:30:00) [9]RxRichEdit1.SelectAll;
вот эта штута я так понимаю должна выделять все что находиться в RxRichEdit1, но она этого не делает,
если самому предварительно мышкой выделить все что есть в RxRichEdit1 тогда все работает без ошибок
sdaf (2007-11-26 21:25:00) [10]попробовал предложенный код с потоками, у меня вообще ни как не реагирует на такой код
и так тоже попробовал, иногда содержимое уходит в никуда,
RxRichEdit1.SelectAll;
RxRichEdit1.CopyToClipboard;
RxRichEdit2.PasteFromClipboard;
RxRichEdit1.clear;
с первого удаляеться и во второй не копируется просто гдето теряеться (
{RASkov} (2007-11-26 20:51:00) [11]> Это жестоко )
Согласен :)
> В RXrichEdit есть SaveTo(LoadTo)Stream, но только тоже копирует
> только текст.
Вот только что специально проверил.... работает зараза :)
procedure TForm1.Button1Click(Sender: TObject);
var memStr: TMemoryStream;
begin
RxRichEdit1.Lines.LoadFromFile('1.rtf');
memStr:=TMemoryStream.Create;
try
RxRichEdit1.Lines.SaveToStream(memStr);
memStr.Seek(0, soBeginning);
RxRichEdit2.Lines.LoadFromStream(memStr);
finally
memStr.Free;
end;
end;
Gydvin (2007-11-26 20:22:00) [12]
> sdaf (26.11.07 19:47) [3]
> В RXrichEdit есть SaveTo(LoadTo)Stream, но только тоже копирует
> только текст.
Мх. Если оттуда сохранять в файл, а затем читать. Битмапы сохраняются? Если сохраняются, то смотреть реализацию. savetofile, loadfromfile. И делать выводы...
> begin RxRichEdit1.SelectAll;
> RxRichEdit1.CopyToClipboard;
> RxRichEdit2.PasteFromClipboard;end;
Это жестоко ) Хотяб буфер обмена перед этим шаманством сохранять, а затем востонавливать.
{RASkov} (2007-11-26 20:14:00) [13]> [3] sdaf (26.11.07 19:47)
> А через буфер обмена незнаю как.
Попробуй так:
begin
RxRichEdit1.SelectAll;
RxRichEdit1.CopyToClipboard;
RxRichEdit2.PasteFromClipboard;
end;
sdaf (2007-11-26 19:47:00) [14]В RXrichEdit есть SaveTo(LoadTo)Stream, но только тоже копирует только текст.
А через буфер обмена незнаю как.
Gydvin (2007-11-26 10:14:00) [15]а чрез saveto(loadfrom)stream (если правда там такой есть)?
ЮЮ (2007-11-26 04:03:00) [16]> Пробовал по разному
А через буфер обмена?