Текущий архив: 2007.03.04;
Скачать: CL | DM;
Вниз
Мистика с RichEdit Найти похожие ветки
← →
Nostradamus © (2007-01-13 18:04) [0]Я беру RTF текст из Клипбоарда и по мере надобности загружаю его в RichEdit. Почему-то при этом текст не виден в RichEdit (как будто-бы весь текст белого цвета стал), т.е. он там есть, но его не видно.
Не подскажите в чём может быть проблема?
Релевантные части кода:
Беру текст из Клипбоапда:H := Clipboard.GetAsHandle(CF_RICHTEXT);
RichText := PCHAR(GlobalLock(H));
GlobalUnlock(H);
Загружаю в RichEdit:Stream := TStringStream.Create(RichText);
try
Stream.Seek(0, soFromBeginning);
RichMemo.Lines.LoadFromStream(Stream);
finally
Stream.Free;
end;
← →
Palladin © (2007-01-14 20:08) [1]RichEdit1.PasteFromClipboard;
← →
Nostradamus © (2007-01-14 20:24) [2]Мне это не совсем подходит:
1. RichEdit.Readonly = False
2. Текст нужно загрузить по требованию, а не сразу после того как его скопировали
Может быть есть ещё какие-нибудь варианты решения?
← →
Palladin © (2007-01-14 20:36) [3]1.
RichEdit1.ReadOnly:=False;
RichEdit1.PasteFromClipboard;
RichEdit1.ReadOnly:=True;
2.
Procedure OnТребование(...);
Begin
RichEdit1.ReadOnly:=False;
RichEdit1.PasteFromClipboard;
RichEdit1.ReadOnly:=True;
End;
← →
Nostradamus © (2007-01-14 21:39) [4]Да нет это всё понятно, но мне не хотелось бы использовать для этого клипборд т.к. у пользователя могут быть там данные которые ему нужны, а если использовать Ваш метод, то нужно заменит актуальное содержимое клипборда тем, что мне нужно загрузить в RichEdit.
Плюс к тому клипборд медленее и как это выглядит как плохой стиль.
Почему может не правильно работать LoadFromStream?
← →
Nostradamus © (2007-01-14 21:40) [5]П.С. Текст для RichEdit берётся не только из Клипборда, но и из файла...
← →
Palladin © (2007-01-14 21:44) [6]
> но и из файла...
Procedure OnТребование(...);
Begin
RichEdit1.ReadOnly:=False;
RichEdit1.LoadFromFile(filename);
RichEdit1.ReadOnly:=True;
End;
← →
Nostradamus © (2007-01-14 21:53) [7]Файл создаётся мной и содержит не только RichText, но и другую информацию...
+
Nostradamus © (14.01.07 21:39) [4]
← →
Palladin © (2007-01-14 22:02) [8]а что [4]? первоначально у тебя не получалось вставить из буфера обмена, я ответил, потом оказывается тебе надо не только из буфера но и из файла - тоже ответил, из потока может не получаться по той причине, что там не rtf или, экспериментировать не буду, возможно нужно скопировать часть потока содержащую rtf в отдельный поток (tmemorystream) и грузить из него. а в общем пост [4] мне абсолютно не понятен, непонятно чего же ты хочешь...
← →
Nostradamus © (2007-01-14 23:28) [9]Попробую сформулировать задачу поточнее.
Есть древовидная структура данных. В ней сохранены данные в текстовом виде (Plain Text), в виде форматированого текста (Rich Text) и BMP. Всё это я беру в процессе работы программы из буфера обмена и сохраняю в XML файл.
При повторном запуске программы данные загружаются из XML.
Проблема имеется только с RTF.
Как я получаю RichText из буфера и загружаю в RichEdit я написал в
Nostradamus © (13.01.07 18:04).
RichText это переменная типа String.
Глобально мне нужно вставить текст из памяти (из переменной RichText) в RichEdit!
← →
Nostradamus © (2007-01-15 00:08) [10]Интересно, что текст загружается в RichEdit, только его не видно
← →
Nostradamus © (2007-01-15 00:13) [11]Ещё интересней:
RichEdit1.ReadOnly:=False;
RichEdit1.PasteFromClipboard;
RichEdit1.ReadOnly:=True;
Тот же эффект - текста не видно. Что за прикол?
← →
Eraser © (2007-01-15 00:40) [12]> [9] Nostradamus © (14.01.07 23:28)
может использовать JvRichEdit там работать с фрагментами rtf удобнее.
← →
Nostradamus © (2007-01-15 00:46) [13]Всё - заработало. Оказалось, что св.-во DoubleBuffered должно быть у RichEdit-а False, иначе он текст почему-то не выводит...
Говорю же - мистика.
← →
clickmaker © (2007-01-15 10:42) [14]
> св.-во DoubleBuffered должно быть у RichEdit-а False
нет нужды ему это включать. Это ж обертка над виндозным контролом, он сам себя рисует без участия vcl
← →
Nostradamus © (2007-01-15 13:34) [15]Дело в том, что при ресайзе формы у меня сильно контролы мигали и я проставил тупо всем наследникам TWinControl DoubleBuffered := True. Это помогло, но с RichEdit получился вот такой прикол.
Страницы: 1 вся ветка
Текущий архив: 2007.03.04;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.086 c