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

Вниз

проблемы с RxRichEdit   Найти похожие ветки 

 
sdaf   (2007-11-25 20:30) [0]

Здравствуйте.
У меня есть два RXRichEdit в одном есть текст и картинка(tbitmap), как скопировать из одного все содержимое в другой - пустой RXRichEdit?
Пробовал по разному копируеться только текст, а картинка нет.
Как это можно сделать? Помогите пожалуйста!


 
ЮЮ ©   (2007-11-26 04:03) [1]

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

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


 
Gydvin ©   (2007-11-26 10:14) [2]

а чрез saveto(loadfrom)stream (если правда там такой есть)?


 
sdaf   (2007-11-26 19:47) [3]

В RXrichEdit есть SaveTo(LoadTo)Stream, но только тоже копирует только текст.
А через буфер обмена незнаю как.


 
{RASkov}   (2007-11-26 20:14) [4]

> [3] sdaf   (26.11.07 19:47)
> А через буфер обмена незнаю как.

Попробуй так:
begin
 RxRichEdit1.SelectAll;
 RxRichEdit1.CopyToClipboard;
 RxRichEdit2.PasteFromClipboard;
end;


 
Gydvin ©   (2007-11-26 20:22) [5]


> 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:51) [6]

> Это жестоко )

Согласен :)


> В 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;


 
sdaf   (2007-11-26 21:25) [7]

попробовал предложенный код с потоками, у меня вообще ни как не реагирует на такой код

и так тоже попробовал, иногда содержимое уходит в никуда,
  RxRichEdit1.SelectAll;
  RxRichEdit1.CopyToClipboard;
  RxRichEdit2.PasteFromClipboard;
  RxRichEdit1.clear;
с первого удаляеться и во второй не копируется просто гдето теряеться (


 
sdaf   (2007-11-26 21:30) [8]

RxRichEdit1.SelectAll;
вот эта штута я так понимаю должна выделять все что находиться в RxRichEdit1, но она этого не делает,
если самому предварительно мышкой выделить все что есть в RxRichEdit1 тогда все работает без ошибок


 
sdaf   (2007-11-26 21:36) [9]

Воооо вот так работает))!!!
RxRichEdit1.SetSelection(0,RE.GetTextLen,True);
RxRichEdit1.CopyToClipboard;
RxRichEdit2.PasteFromClipboard;
RxRichEdit1.clear;
Спасибо всем за предложенные варианты


 
Gydvin ©   (2007-11-26 22:15) [10]


> sdaf

Уважаемый, не подумайте, что я просто так придируюсь. Но за такую реализацию переноса инфы из - в . Вы заслуживаете теплого места в Ленге, и благодарных пользователей в качестве чертей с вилами...


 
ЮЮ ©   (2007-11-27 05:59) [11]

> Уважаемый, не подумайте, что я просто так придируюсь. Но
> за такую реализацию переноса инфы из - в . Вы заслуживаете
> теплого места в Ленге, и благодарных пользователей в качестве
> чертей с вилами...


Cогласен, но другого способа переноса части форматированного текста с картинками я в свое время не нашёл. :(

RxRichEdit1.CopyToClipboard;
RxRichEdit2.PasteFromClipboard;


CopyToClipboard выполняется "ассинхронно" и в PasteFromClipboard гарантированна ошибка "Невозможно открыть буфер обмена". (Самый простой способ воспроизвести ситуацию - загрузить два экземпляра Delphi, и во втором запустить приложение на выполнение).

Поэтому следует PasteFromClipboard "обернуть" в try ... except и Applecation.ProcessMassege не помешает.


 
Leonid Troyanovsky ©   (2007-11-27 09:05) [12]


> ЮЮ ©   (27.11.07 05:59) [11]

> Cогласен, но другого способа переноса части форматированного
> текста с картинками я в свое время не нашёл. :(

Форматированный текст переносится путем  EM_STREAMIN|OUT.

Насчет картинок не знаю, наверное, нужно cмотреть какие
возможности представляет COM интерфейс RICHEDIT 2 и 3 версий.
Подробности можно найти на http://home.att.net/~robertdunn/Yacs.html

--
Regards, LVT.


 
Gydvin ©   (2007-11-27 14:47) [13]


> ЮЮ ©   (27.11.07 05:59) [11]

В сабже не говорится о части - говорится о всем содержимом...


 
sdaf   (2007-11-27 23:03) [14]

ну так можно пользоваться  таким кодом
RxRichEdit1.SetSelection(0,RE.GetTextLen,True);
RxRichEdit1.CopyToClipboard;
RxRichEdit2.PasteFromClipboard;
RxRichEdit1.clear;
пользоваться или это смертельно и нада искать другие пути. у меня возник второй вопрос. Таким кодом я затираю буфер наврно, а если у меня там какая нибуть нужная инфа?
можно как нибуть их сохранить чтобы они не улитучились в никуда?


 
Gydvin ©   (2007-11-28 06:08) [15]


> ну так можно пользоваться  таким кодомRxRichEdit1.SetSelection(0,
> RE.GetTextLen,True);RxRichEdit1.CopyToClipboard;RxRichEdit2.
> PasteFromClipboard;RxRichEdit1.clear;пользоваться или это
> смертельно и нада искать другие пути.


Вы сами ответили на свой вопрос


>  Таким кодом я затираю буфер наврно, а если у меня там какая
> нибуть нужная инфа?


Вообще буфер обмена, как таковой, предназначен для использования его пользователем, либо программой в автоматическом режиме, но только с ведома пользователя (иногда нужны оказывается такие программы). Но это не в вашем случае.

Вердикт: Изыскивать другие методы.


 
sdaf   (2007-11-28 19:23) [16]

надумал вот что, может не самый подходящий способ зато не используем буфер. Создать временный text.rtf в него записать, и из него считать во второй RXRichEdit вот примерно так,
RxRichEdit1.Lines.SaveToFile("c:\text.rtf");
RxRichEdit1.Lines.LoadFromFile("c:\text.rtf");
RxRichEdit1.Lines.Add(" ");
вот примерно вот так



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

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

Наверх




Память: 0.51 MB
Время: 0.02 c
2-1196440912
vegarulez
2007-11-30 19:41
2007.12.23
Вопрос (даже не знаю как правильно сформулировать) про группы.


15-1195650597
Cyrax
2007-11-21 16:09
2007.12.23
PHP5: Как считать без "бонусов" массив из переменной $_REQUEST


4-1176447569
Dmitry_177
2007-04-13 10:59
2007.12.23
Перевести SYSTEMTIME в строку


15-1195705163
Alex___
2007-11-22 07:19
2007.12.23
Opera 9.24


2-1196249636
Alex_C
2007-11-28 14:33
2007.12.23
Вопрос по Canvas.TextOut