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