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

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

проблемы с 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]

> Пробовал по разному

А через буфер обмена?


Наверх

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